这是我参与第五届青训营伴学笔记创作活动的第五天!
今天,学习了JavaScript 的语法超集TypeScript。
主要内容
- TypeScript 历史及定义解析
- TypeScript 优势解读
- TypeScript 练习工具
发展历史
TypeScript的优势?
- 可读性增强:基于语法解析TSDoc并且ide增强
- 可维护性增强:在编译阶段暴露大部分错误
- 多人合作的大型项目中,获得更好的稳定性和开发效率
- 包含于兼容所有JS特性,支持共存
- 支持渐进式引入与升级
唯一编译器推荐:Visual Studio Code
基础数据类型
对象类型
也可以自定义类型,我们通常用I开头。
- readonly:只读属性,约束属性不可在初始化对象外赋值。
- 任意属性:约束所有对象属性都必须是该属性的子类型。例如:[key:string]:any;
函数类型
如何为函数添加类型声明?
- 直接在函数上进行一个类型的补充
- 给函数变量赋值一个函数类型的声明
数组类型
补充类型
泛型
不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
类型别名与类型断言
接着,学习了TypeScript 高级类型,让我们可以在日常的前端开发过程中,通过高级类型的方式,将普通类型的解决方案进行高级化。
重点内容
- 联合交叉类型
- 类型保护与类型守卫
- Merge 函数类型实现
- 函数返回值类型
- TypeScript 工程应用
联合交叉类型是什么?
- 联合类型可以表示一个值可以是几种类型之一。
- 交叉类型多种类型叠加一起成为一种类型,它包含所需的所有类型的特性。
类型保护与类型守卫
类型保护:访问联合类型时,处于程序安全,仅能访问联合类型中的交集部分。 类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。 此外,联合类型+类型保护=自动类型推断
- 索引类型:关键字keyof,其相当于取值对象中的所有key组成的字符串字面量。
- 关键字in:其相当于取值字符串字面量中的一种可能,配合泛型即表示每个key。
- 关键字[?]:通过设定对象可选选项,即可自动推导出子集类型。
函数返回值类型
- 实现函数delayCall的类型声明
- delayCall接受一个函数作为入参
- 结果为入参函数的返回结果
函数返回值类型
关键字extends跟随泛型出现时,表示类型推断,其表达可类比三元表达式。 关键字infer出现在类型推荐中,表示定义类型变量,可以用于指代类型。
TypeScript 工程应用
加油!拒绝摆烂!让我们不负青春!在青训营度过充实的一天!