什么时候使用断言,断言的类型怎么判定

来源:12-6 描述列表数据渲染与签到联动

weixin_慕侠6348035

2022-12-14

老师,在做VUE项目的时候,store的每个模块的infos使用了索引签名interface {[index: string]: unknown}去定义,然后在vue文件中获取时使用了断言去解决TS的报错,想问下什么时候该用断言,和断言成什么类型,这个是怎么判定

写回答

1回答

西门老舅

2022-12-14

你好,

类型断言的定义:TypeScript 不知道具体类型 或者 TypeScript 记录的类型没有办法满足使用要求时,可以使用类型断言来明确指定为自己想要使用的类型。

在项目中因为后端响应的类型可能要经常变动,那么最好不给确定的类型,而是给索引签名,那么给unknown类型主要还是严谨一些,主要是跟any比。在使用unknown类型的时候就需要断言来明确是什么类型,有助于程序不写出错误。

当然断言的其他场景是很多的,举例如下:

1. 对于通过标签获取的DOM,TypeScript可以推断出类型,但是对于其他方式,TypeScript无法推断,我们可以使用类型断言来明确指定元素类型。

let div1 = document.querySelector('div')   // 自动推断出是 HTMLDivElement

let div2 = document.querySelector('#app') as HTMLDivElement    // 断言#app就是一个div类型

2.对于空对象占位,可以断言为特定类型,以获取正确的代码提示和类型推断。

let obj = {} as Obj;    // 保证 obj 有类型,而是还可以不添加初始值。

3. 类型断言可以把宽泛的类型转成比较具体的类型。

let foo: number|string = 'hello'

(foo as string).length

当然:慎用类型断言,除非你真的有把握。类型断言是一个编译时语法,不涉及运行时。


0
3
weixin_慕侠6348035
回复
西门老舅
好的,谢谢老师
2022-12-26
共3条回复

Vue3 + React18 + TS4入门到实战 系统学习3大热门技术

专为初级前端人员设计,系统性学习三大技术

261 学习 · 182 问题

查看课程