gpt4 book ai didi

angular - 类型 'unknown' 不可分配给类型 'string'

转载 作者:行者123 更新时间:2023-12-01 23:16:06 25 4
gpt4 key购买 nike

这里我设置函数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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com