【ts】关于ts的类型谓词

86 阅读1分钟

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 {};