这里我设置函数toBase64()
export function toBase64(file:File) {
return new Promise((resolve,reject)=>{
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload=()=> resolve(reader.result);
reader.onerror=(error) =>reject(error);
})
表明reader.result
的类型是
字符串 |数组缓冲区 | null
,但是,当我需要使用响应时。
export class InputImgComponent implements OnInit {
constructor() { }
imageBase64!:string;
@Output()
onImageSelected = new EventEmitter<File>();
ngOnInit(): void {
}
change(event:any){
if(event.target.files.length>0) {
const file:File= event.target.files[0];
toBase64(file).then((value)=>this.imageBase64=value );
}
它说result type is unknown
,我将imageBase64
设置为string,Type 'unknown' is not assignable to type 'string'
.
真奇怪,我怎么解决这个问题,我只需要字符串结果。
最佳答案
您还没有指定 Promise
的类型由您的函数返回,因此它默认为 Promise<unknown>
. Promise
是泛型类型,因此字符串的 promise 是 Promise<string>
.
您可以在 promise 的构造函数或函数的返回类型上对此进行注释,Typescript 将为您推断。
export function toBase64(file:File) {
return new Promise<string>((resolve,reject) => {
const reader = new FileReader();
// the docs say that result should always be a string, but double-check for future-proofing
reader.onload = (ev) => typeof reader.result === "string" ? resolve(reader.result) : reject("Unexpected type received from FileReader");
reader.onerror = (error) => reject(error);
reader.readAsDataURL(file);
})
}
关于angular - 类型 'unknown' 不可分配给类型 'string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68823887/