我在 const arr = new Uint8Array(fileReader.result).subarray(0, 4);
中得到一个错误 [ts],特别是在 fileReader.result
中第 11 行
Argument of type 'string | ArrayBuffer' is not assignable to parameter of type 'ArrayBuffer | ArrayLike | SharedArrayBuffer'.
Type 'string' is not assignable to type 'ArrayBuffer | ArrayLike | SharedArrayBuffer'.
import { AbstractControl } from '@angular/forms';
import { Observable, Observer } from 'rxjs';
export const mimeType = (
control: AbstractControl
): Promise<{ [key: string]: any }> | Observable<{ [key: string]: any }> => {
const file = control.value as File;
const fileReader = new FileReader();
const frObs = Observable.create(
(observer: Observer<{ [key: string]: any }>) => {
fileReader.addEventListener('loadend', () => {
const arr = new Uint8Array(fileReader.result).subarray(0, 4);
let header = '';
let isValid = false;
for (let i = 0; i < arr.length; i++) {
header += arr[i].toString(16);
}
请大佬们分享一下解决方法。谢谢
最佳答案
您可以通过适当的类型转换来消除错误:例如
...而不是...
this.imagePreview = reader.result;
...尝试...
this.imagePreview = <string>.reader.result;
……或者……
this.imagePreview = reader.result as string;
...或者代替...
const arr = new Uint8Array(fileReader.result).subarray(0, 4);
...写...
const arr = new Uint8Array(<ArrayBuffer>fileReader.result).subarray(0, 4);
……或者……
const arr = new Uint8Array(fileReader.result as ArrayBuffer).subarray(0, 4);
希望对您有所帮助。
关于angular - 类型 'string' 不可分配给类型 'ArrayBuffer | ArrayLike<number> | SharedArrayBuffer',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53536897/