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

标签 angular typescript promise

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

相关文章:

angular - 在 ng build --prod am gettng 错误上,属性 'email' 在类型 'Object 上不存在

angular - 订阅路由守卫中的可观察对象及其含义

javascript - Angular 6 - Less CSS 的导入不再有效

node.js - 获取 TypeError : wsc. require is not a function for hyco-ws npm package

javascript - 我如何从这个 jsFiddle 动态添加一个延迟到 promise 中?

angularjs - 如何在 Angular 1 应用程序中嵌入独立的 Angular 2 应用程序

typescript - Ionic + Jasmine + Tslint - 类型上不存在属性 'and'

javascript - 如何在 Typescript 中检查字符串是否为数字/浮点?

javascript - 当 Promise 的解析取决于 setTimeout 时,JS 事件循环如何表现?

javascript - 从递归函数 catch 中解析一个 promise