
TS类型断言
类型断言的作用
类型断言用于实现覆盖编译器推断的类型。
- 也就是说,当我们使用了类型断言,那么就相当于告诉编译器,我们比它更了解这个变量应该是什么类型,编译器不应该再继续报错。
interface FooType{
a: string,
b: number,
}
const Foo = {} as FooType
Foo.a = 'a'
Foo.b = 1
类型断言和类型转换的区别
类型断言不等同于类型转换
使用类型断言的易错点
由于类型断言会破坏编译器的类型推断,所以当我们使用类型断言时需要小心。
- 当我们使用类型断言强制声明一个变量为某个接口定义的结构时,即使我们忘记了向这个变量中添加接口规定的属性,TS编译器也不会报错。
interface FooType{
a: string,
b: number,
}
const Foo = {} as FooType
双重断言
双重断言的作用
- 双重断言用于处理当想将S类型的变量断言为T类型,但是S类型和T类型互相兼容的情况。
使用双重断言的方法
- 先将S类型断言为 any 类型,然后再将整个断言为T类型。
function handler(event: Event)
{
const element = (event as any) as HTMLElement
}
如何确定是否需要双重断言
- 当S类型是T类型的子集或T类型是S类型的子集的时候,就不需要使用双重断言,单个断言就足够解决。
- 还有一种方法是让编译器帮助我们,当我们使用单个断言而编译器报错的时候,就说明S类型和T类型并不互相兼容,需要使用双重断言。