这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
01 TS历史
02 为什么TS
TS与JS比较:
- JS动态类型(执行阶段才确定类型,比如py),TS静态类型
- 都是弱类型语言(自动隐式类型转换)
优势
- 静态——可读性强,可维护性强 => 多人合作友好
- JS的超集,兼容JS,支持渐进式改造
03 TS基础
基础数据类型
声明方法——主要是参数类型要声明出来
复杂数据类型
只读 readonly jobID : number;
可选 hobby ?: string;
任意属性
函数重载
要重视传入参数的类型
数组
先定义type
然后再声明,以及赋值
TS补充
TS泛型
不预先指定类型,使用的时候再指定
注意语法与函数的不同
泛型约束
限制泛型必须符合某个数据类型
泛型默认类型
类型别名&类型断言
字符串/数字字面量
04 高级类型
联合、交叉类型
类型声明繁琐,存在较多重复
联合类型:IA|IB;联合类型表示一个值可以是几种类型之一
交叉类型:IA&IB;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性
类型保护与类型守卫
根据key的情况来判断选了哪个类型
Merge 函数类型实现
js经常会污染,需要解构的方式来实现
可以用source、target来为对象进行类型的声明
keyof索引类型,关键字in、?
函数返回值类型
关键字:【extends】跟随泛型出现时,表示类型推断,其表达可类比三元表达式。如 T=== 判断类型?类型 A:类型 B 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型。
TypeScript 工程应用
node、web端两种
webpack——自动
使用TSC编译——手动