typescript - 实例上下文类型是否可能?
问题描述
在我提出功能请求之前,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' 不可分配给“字符串”类型的参数
解决方案
这是不可能的。即使此功能存在,它也可能不会在语法上具有追溯性——方法调用可能永远不会应用于对变量的先前引用。
推荐阅读
- r - 如何有条件地将数据分配给列
- c# - 在 SmartDeviceApplication 上找不到 CoreDLL.dll
- amazon-web-services - S3 存储桶找不到 index.html,给我一个 404 错误
- mongodb - Mongodb mongodump & mongorestore -- 文档数量不等
- python - PIP/Python 软件包安装到错误的 PATH
- azure - 可以从不同的机器或位置恢复 azcopy 作业吗?
- python - 对重复行求和
- python - Python Django - pgAdmin 应用程序关闭后,带有 Amazon RDS 的 PostgresSQL 数据库关闭
- react-hooks - 使用反应增加值
- javascript - 输入 onChange 处理程序适用于桌面,但不适用于 iOS