4.1、类型断言语法(用来手动指定一个值的类型):
语法1、值 as 类型
语法2、<类型>值:这种形式不能在 tsx 中使用,并且<>的语法也运用在“泛型”中,所有一般采用第一种语法。
4.2、?将一个联合类型断言为其中一个类型
联合类型提到过,当 TS 不确定一个联合类型的变量到底是哪个类型的时候,只能访问此联合类型的所有类型中共有的属性或方法。但是在有的时候,我们确实需要在还不确定类型的时候就访问其中一个类型特有的属性或方法,就需要断言:
interface Cat {
name: string;
run(): void
}
interface Fish {
name: string,
swim(): void
}
function isFish(animal: Cat | Fish){
if(typeof(animal as Fish).swim === 'function'){
return true
}
return false
}
注意:类型断言只能够「欺骗」TS 编译器,无法避免运行时的错误,反而滥用类型断言可能会导致运行时错误。