如何在TypeScript中输入检查日期?

时间:2019-05-21 07:15:43

标签: typescript firefox-webextensions typescript3.0

instanceof Date === true似乎不满足TypeScript 3.4.5的基于控制流的类型分析。在下面的代码中,TypeScript将抱怨我返回的值不是Date,即使我检查它确实是Date。

async function testFunction(): Promise<Date> {
    const {testDate}: {testDate: Date | string} = await browser.storage.local.get({testDate: new Date()});

    if (testDate instanceof Date === true) {
        // typescript@3.4.5 will complain:
        // Type 'string | Date' is not assignable to type 'Date'.
        //   Type 'string' is not assignable to type 'Date'.
        return testDate;
    } else if (typeof testDate === "string") {
        return new Date(testDate);
    }
}

我可以将出现问题的行更改为return testDate as Date,但是感觉好像我没有做正确的事。

1 个答案:

答案 0 :(得分:2)

我认为您的问题不是您的Typescript版本,而是比较。您可以在没有=== true的情况下尝试吗?

if (testDate instanceof Date) {
    return testDate;
}