0
点赞
收藏
分享

微信扫一扫

深入理解TS(3)—— TS类型断言

求阙者 2022-03-20 阅读 99
typescript

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 //不会报错缺少属性a和属性b

双重断言

双重断言的作用

  • 双重断言用于处理当想将S类型的变量断言为T类型,但是S类型和T类型互相兼容的情况。

使用双重断言的方法

  • 先将S类型断言为 any 类型,然后再将整个断言为T类型。
function handler(event: Event)
{
    const element = (event as any) as HTMLElement
}

如何确定是否需要双重断言

  • 当S类型是T类型的子集或T类型是S类型的子集的时候,就不需要使用双重断言,单个断言就足够解决。
  • 还有一种方法是让编译器帮助我们,当我们使用单个断言而编译器报错的时候,就说明S类型和T类型并不互相兼容,需要使用双重断言。
举报

相关推荐

0 条评论