TypeScript 函数返回类型:“obj is Date”是什么意思?

问题描述 投票:0回答:2

我刚刚看到这个 TypeScript 代码片段

export function is_date(obj: any): obj is Date {
    return Object.prototype.toString.call(obj) === '[object Date]';
}

我不明白

obj is Date
在函数的“返回类型”中做了什么。

如果有人能解释一下,不胜感激

typescript
2个回答
2
投票

与布尔值相同

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


1
投票

它与 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
}
© www.soinside.com 2019 - 2024. All rights reserved.