在阅读本文时,我才发现有关用户定义的类型保护的信息:https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards
在本文的一个示例中,他们使用pet is Fish
作为方法返回类型,这是一个谓词。
我发现,除了此返回类型外,还可以使用boolean
。那么parameter is Type
返回类型仅仅是语法糖,还是有特定用途?
答案 0 :(得分:3)
如果返回boolean
,该函数将是一个简单的函数,而不是类型保护。 pet is Fish
语法向编译器发出信号,该函数将影响参数的类型。
例如:
class Fish { f: boolean }
class Dog { d: boolean; }
declare let x: Fish | Dog;
declare function isFish(p: Fish | Dog): boolean
declare function isFishGuard(p: Fish | Dog): p is Fish;
if (isFishGuard(x)) {
x.f // x is Fish
}
if (isFish(x)) {
x.f // error x is still Fish|Dog
}