我刚刚看到这个 TypeScript 代码片段
export function is_date(obj: any): obj is Date {
return Object.prototype.toString.call(obj) === '[object Date]';
}
我不明白
obj is Date
在函数的“返回类型”中做了什么。
如果有人能解释一下,不胜感激
与布尔值相同
export function is_date(obj: any): boolean {
return Object.prototype.toString.call(obj) === '[object Date]';
}
阅读有关(类型保护)的文档https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards
它与 boolean 类似,但它也限制了函数调用后的类型:
type DateOrString = string | Date
function isDate(dateOrString: DateOrString): dateOrString is Date
{
return date instanceof Date
}
现在,如果您在条件中使用它,您将获得具有受限类型的变量:
if (isDate(dateOrString)) {
// here `dateOrString` is of type Date
}