TS 体系

59 阅读2分钟

type 常用于声明,基础数据类型或 联合类型 interface 常用于 引用类型,或复杂类型

interface 常用于继承等

TS 类型链

  1. never-botoom type
  2. 基础类型
  3. 引用类型,联合交叉类型
  4. any unknown--top type

ts

  1. js 超集
  2. 解决js 动态类型,弱语言的特点
  3. 好的类型注解,就是好的注释,易于维护

ts 静态类型

  1. 那既然静态类型,更好,那它的特点,因需要声明变量前,去声明类型,在编译期,规避类型错误

ts 接口

  1. 用于定义对象数据结构,常用于继承接口类型,声明合并等

联合类型

  1. 可以通过 | 运算符,可使变量,满足多种类型

类型断言

  1. 用于明确知道某些变量类型

泛型

  1. 用于解决类型复用,主要场景,用于函数参数类型,映射类型

keyof

映射类型

  1. 就是一种动态类型,咋理解动态,是说通过变量生成吗

类型运算

  1. 条件运算, T extends U ? A:B
  2. 约束 extends 约束类型,只能是这个,和单纯声明神码区别呢
  3. infer 具体怎么操作,暂不理解
  4. 联合类型,
  5. 交叉类型
  6. 映射类型

类型

通俗的理解,其实就是语言对于不同内容的抽象定义,不同类型 内存占用不同

类型安全

  1. 其实就是只允许做该类型的操作
  2. 类型安全,其实就是通过,静态类型和动态类型检测保障的、

类型编程/类型体操

  1. 基于参数类型,做逻辑运算,产生新的类型。

原始类型标注

数组类型标注 数组同样是我们最常用的类型之一,在 TypeScript 中有两种方式来声明一个数组类型:

一般以第一种为主
const arr1: string[] = [];

const arr2: Array<string> = [];

数组对应元祖,需要提前确定长度,以及对应类型,主要是避免越界等行为

对象 一般interface 常用于去解决对象或类的声明,type 更适用 联合类型,复杂类型别名等 衍生出,partial 可选,readonly 可读,必选,等属性

枚举类型可以替代类型导出

函数/类,涉及概念复杂,先过

泛型

  1. 多用于函数中,为了类型复用,使参数,以及返回值能在调用时指向泛型类型

类型编程套

模式匹配提取

对于数组,一般常用于去直接提取,特定位置的元素,字符串,常用于提取或构造新类型,函数类型,可提取参数类型,以及返回值类型等

重新构造做变化

其实就是配合extedns 约束, 配合infer 提取,再重新生成一个新类型。