首页 > 解决方案 > 实例上下文类型是否可能?

问题描述

在我提出功能请求之前,TypeScript 是否可以根据范围内调用的方法来判断实例属性的类型?例如,在此代码中只readAsDataURL()被调用过,const fileReader所以fileReader.result必须是字符串,但它仍然是类型string | ArrayBuffer

public blobToDataURL(data: Blob): Promise<string> {
  return new Promise<string>((resolve, reject) => {
    const fileReader: FileReader = new FileReader();
    fileReader.addEventListener('error', event => {
        reject(fileReader.error);
    });
    fileReader.addEventListener('load', event => {
        resolve(fileReader.result as string);
    });
    fileReader.readAsDataURL(data);
  });
}

如果你删除as string你得到

'string | 类型的参数 ArrayBuffer' 不可分配给“字符串”类型的参数

标签: typescript

解决方案


这是不可能的。即使此功能存在,它也可能不会在语法上具有追溯性——方法调用可能永远不会应用于对变量的先前引用。


推荐阅读