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
,但是感觉好像我没有做正确的事。
答案 0 :(得分:2)
我认为您的问题不是您的Typescript版本,而是比较。您可以在没有=== true
的情况下尝试吗?
if (testDate instanceof Date) {
return testDate;
}