前言
前面更文通过学习 TS 的类型/枚举/函数/类/泛型等,基本类型,其他类型和高级类型 已经对TS有了初步的熟悉, 其中有和 JS 中并存的知识点, 也有相对 JS没有的, 本文来学习 TS 重要知识点 -- 类型断言
现在 TypeScript + Vue3 应用挺广了, 如果不学习总感觉跟不上大厂的节奏. 学习 TypeScript(虽然觉得也是可选的,但还是要学,真卷...) 这里有记录学习 TypeScript 的过程, 收录在 TypeScript 实战专栏
Typescript 中文文档 & 源码
Typescript 官网地址: typescriptlang.org/zh/
Typescript 中文文档:类型断言
TypeScript 类型断言
interface IPerson {
name: string;
age: number;
}
let person = {} as IPerson;
person.name = 'xn213'
person.age = 21
请慎重使用 类型断言. 因为我们的原因, 为了书写方便, 会强制把一个类型断言会造成 TypeScript 丧失代码提示的功能.
类型断言是有强制性, 但也并不是万能的, 如下面的情况下也会报错:
interface Person {
name: string;
age: number;
_id: number;
}
let person = '这是一个字符串 string 而非对象' as Person; // Error
这个时候会报错, 很显然不能把 string 强制断言为一个接口 Person, 怎么处理呢? 当然可以使用双重断言来解决: 但是看起来很傻瓜式, 有没有!
interface Person {
name: string;
age: number;
_id: number;
}
let person = '这是一个字符串 string 而非对象' as any as Person; // √
将一个字符串断言为 any, 然后就可以断言成接口类型(interface).. (ps: 所以这个有必要吗很鸡肋..知道了解就好..)
Vue3 学习实战系列更文:
- Vue3 源码学习-工具函数 utils(二)
- Vue3-初体验,
- Vue3-
生命周期和setup()函数, - Vue3-
computed & watch, - Vue3-
Teleport改变组件挂载的根节点, - Vue3-
Suspense处理异步请求, - Vue3-
defAsyncComponent异步组件(新增), - Vue3-
fragments(新增), - Vue3-
v-model(非兼容),
- Vue3 源码仓库
vue-next: github.com/vuejs/vue-n… - Vue3.x 官方中文文档: v3.cn.vuejs.org