这是我参与「第五届青训营 」伴学笔记创作活动的第4天。
一、课程重点
- TS优势
- TS基本语法
- 联合交叉类型
- 类型保护与类型守卫
- Merge函数类型实现
- 函数返回值类型
- TS工程应用
二、知识点笔记
TS静态类型 JS动态类型 区别:编译发生在执行前或执行时
静态类型
- 可读性增强
- 可维护性增强
多人合作的大项目中,获得更好的稳定性和开发效率
JS的超集
- 包含于兼容所有JS特性,支持共存
- 支持渐进式引入与升级
TS基本语法
x:number
变量类型
函数类型申明
函数重载 定义any
数组类型
TS泛型
不预先制定具体的类型,而在使用的时候再指定类型的一种特性
type IArrR = <T>(target:T) => T[]; 函数
多泛型
interface IX<T,U>{
key:T;
val:U;
}
泛型类
class IMan<T>{
instance:T;
}
泛型别名
type ITypeArr<T> = Array<T>;
函数在前面加,别的在后面加
泛型约束:T extends string 限制泛型必须符合字符串
泛型参数默认类型 T = number
类型别名& 类型断言
字符串/数字字面量
允许指定字符串/数字必须的固定值
用 | 隔开 =或的关系
高级类型
联合类型:IA | IB 表示一个值可以是几种类型之一
交叉类型:IA&IB 多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性
类型保护:访问联合类型时,出于程序安全,仅能访问联合类型中的交集部分
类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域 只有两类属性完全不同时要写
联合类型+类型保护=自动类型推断
Partial:
keyof关键字,相当于取值对象中的所有key组成的字符串字面量
in关键字,相当于取值字符串字面量中的一种可能,和泛型P表示每个key
?关键字,通过设定对象可选选项,可自动推导出子集类型
函数返回值类型:
例:delayCall的类型声明,入function,出promise 函数的返回值,用泛型表达
extends关键字出现在泛型定义中时,表示类型推断,类比三元表达式
infer关键字出现在类型推荐中,表示定义类型变量,用于指代类型
工程应用
Web webpack处理js文件 loader处理ts文件,会进行编译与类型检查,转化为js文件
Node 使用tsc编译