携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情
上一篇文章中,我们介绍了TS常用类型中的元组以及类型推论,接下来将会介绍TS常用类型之类型断言以及字面量类型
TS常用类型之类型断言
- 有的时候你会比TS更加明确一个值的类型,此时,你可以使用类型断言来指定更具体的类型,比如:
<a href="https://www.baidu.com/" id="link">百度</a>
aLink:HTMLElement
const aLink = document.getElementById('link')
注意:getElementById方法返回值的类型是HTMLElement,该类型只包含所有标签的公共的属性或者方法,不包含a标签特有的href等属性 因此,这个类型太宽泛,不具体,无法操作href等a标签特有的属性或者方法 解决方式:这种情况下就需要使用类型断言指定更加具体的类型
- 使用类型断言
//TS中的类型断言的常规写法:
const aLink:HTMLAnchorElement
const aLink document.getElementById('link')as HTMLAnchorElement
解释:
- 使用as 当作类型断言
- 关键字as后面的类型是一个更加具体的类型(HTMLAnchorElement是HTMLElement的子类型)
- 通过类型断言,aLink的类型变得更加具体,这样就可以访问a标签中特有的属性或者方法了
另一种语法,使用<>语法,这种语法形式不常用,知道即可 示例代码如下所示
//使用<>语法来实现TS中的类型断言
const aLink=<HTMLAnchorElement>document.getElementById('link')
这种方式也可以实现类型断言,但在实际的开发过程中,非常少的用到,我们只需要了解知道有这么个<>语法即可,不需要精通掌握
技巧:在浏览器控制台,通过console.dir()打印DOM元素,在属性列表的最后面,即可以看到该元素的类型了,