TypeScript | 青训营笔记

85 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第4天。

一、课程重点

  1. TS优势
  2. TS基本语法
  3. 联合交叉类型
  4. 类型保护与类型守卫
  5. Merge函数类型实现
  6. 函数返回值类型
  7. 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编译