is关键词主要用来框定类型并实现对应的类型断言,下面看一个例子
写一个简单函数来判断某个值是否是字符串类型
function isString(value:unknown):boolean{return typeof value === "string"
}
这里我们的参数选用了unknown类型,该类型就是一个保险的any,当你去调用一些属性和方法的时候会报错,因为其是一个危险的“未知”类型。
用上面那个函数去进行一个简单的判断
let someValue:unknown="hhhha"
if (isString(someValue)){console.log(someValue.length); //这边出现报错,someValue任然是个unknown类型
}
在上面这个判断中,istring能判断一个值是否是string,是的话就打印出该字符串的长度
虽然我们已经判断出其是个string类型,但是其类型没有实现转换,因此不能调用length属性
我们可以使用is关键词去改写这个判断函数
function isString1(value:unknown):value is string{return typeof value ==="string"
}
进行一下判断
if (isString1(someValue)){console.log(someValue.length);
}
这里就没有报错,如果在编辑器上可以发现,这个someValue的类型转成了string