跳到主要内容

类型谓词(is)

在 TypeScript 中,函数还支持另外一种特殊的类型描述,如下示例 :

function isString(s): s is string {
// 类型谓词
return typeof s === "string";
}
function isNumber(n: number) {
return typeof n === "number";
}
function operator(x: unknown) {
if (isString(x)) {
// ok x 类型缩小为 string
}
if (isNumber(x)) {
// ts(2345) unknown 不能赋值给 number
}
}

在上述代码中,在添加返回值类型的地方,我们通过“参数名 + is + 类型”的格式明确表明了参数的类型,进而引起类型缩小,所以类型谓词函数的一个重要的应用场景是实现自定义类型守卫。