ts的类型谓词是用来收缩函数的参数类型的,这是ts中的类型保护手段之一,使用格式为:在函数的返回值类型上写args is type
,类型谓词总是附加到接受单个参数并返回布尔值的函数上,当函数返回值为true时,那么函数的参数的类型会被收缩为type类型。
示例代码:
interface Bird {}
interface Fish {
swim(): void;
}
function isFish(target: Bird | Fish): target is Fish {
return (target as Fish).swim !== undefined;
}
type Demo = Bird | Fish;
const demo: Demo = {
swim() {},
};
// demo的类型被收缩
if (isFish(demo)) {
// 所以可以直接调用swim()
demo.swim();
}
export {};