首页 > 解决方案 > 在 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 类型?

标签: typescript

解决方案


问题是您没有将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;
}

推荐阅读