typescript - 在 TypeScript 中,为什么我的类型不能正确解析?
问题描述
我的代码如下:
class MyFile {
fileName: string;
checksum: string;
constructor(fileName: string, checksum: string) {
this.fileName = fileName;
this.checksum = checksum;
}
}
async function getFile() {
return new Promise(function(resolve, reject) {
resolve(new MyFile("test.pdf", "abcdefgh"));
});
}
async function run() {
const file = await getFile();
const fileName = file.fileName;
}
我收到以下编译错误:
error TS2339: Property 'fileName' does not exist on type '{}'.
为什么没有正确检测到我的 MyFile 类型?
解决方案
问题是您没有将MyFile
类型分配给file
变量,因此静态分析器不知道它的属性。您将MyFile
类型分配给file
您需要将MyFile
类型添加到函数Promise
返回的类型。getFile
class MyFile {
fileName: string;
checksum: string;
constructor(fileName: string, checksum: string) {
this.fileName = fileName;
this.checksum = checksum;
}
}
async function getFile(): Promise<MyFile> {
return new Promise<MyFile>(function(resolve, reject) {
resolve(new MyFile("test.pdf", "abcdefgh"));
});
}
async function run() {
const file: MyFile = await getFile();
const fileName: string = file.fileName;
}
推荐阅读
- python - 来自底层脚本的数据框未更新
- javascript - 隐藏 div 仅适用于第一个 if 语句
- angular - ASP.Net Core 2.1 Angular SSR/Universal 返回 Http 状态代码 404
- javascript - Rails form_with ajax回调不起作用
- parsing - 如何使用 IIB 解析 YAML 模型?
- android-studio - 在数据/数据路径下找不到 default.realm 文件
- machine-learning - 通过相关矩阵进行特征选择
- c# - 在 ASP.Net 中基于 SQL 表动态生成模型
- macos - 以编程方式禁用 NSButton 删除边框
- javascript - 单击浏览器后退按钮时如何获取当前 URL?