type 常用于声明,基础数据类型或 联合类型 interface 常用于 引用类型,或复杂类型
interface 常用于继承等
TS 类型链
- never-botoom type
- 基础类型
- 引用类型,联合交叉类型
- any unknown--top type
ts
- js 超集
- 解决js 动态类型,弱语言的特点
- 好的类型注解,就是好的注释,易于维护
ts 静态类型
- 那既然静态类型,更好,那它的特点,因需要声明变量前,去声明类型,在编译期,规避类型错误
ts 接口
- 用于定义对象数据结构,常用于继承接口类型,声明合并等
联合类型
- 可以通过 | 运算符,可使变量,满足多种类型
类型断言
- 用于明确知道某些变量类型
泛型
- 用于解决类型复用,主要场景,用于函数参数类型,映射类型
keyof
映射类型
- 就是一种动态类型,咋理解动态,是说通过变量生成吗
类型运算
- 条件运算, T extends U ? A:B
- 约束 extends 约束类型,只能是这个,和单纯声明神码区别呢
- infer 具体怎么操作,暂不理解
- 联合类型,
- 交叉类型
- 映射类型
类型
通俗的理解,其实就是语言对于不同内容的抽象定义,不同类型 内存占用不同
类型安全
- 其实就是只允许做该类型的操作
- 类型安全,其实就是通过,静态类型和动态类型检测保障的、
类型编程/类型体操
- 基于参数类型,做逻辑运算,产生新的类型。
原始类型标注
数组类型标注 数组同样是我们最常用的类型之一,在 TypeScript 中有两种方式来声明一个数组类型:
一般以第一种为主
const arr1: string[] = [];
const arr2: Array<string> = [];
数组对应元祖,需要提前确定长度,以及对应类型,主要是避免越界等行为
对象 一般interface 常用于去解决对象或类的声明,type 更适用 联合类型,复杂类型别名等 衍生出,partial 可选,readonly 可读,必选,等属性
枚举类型可以替代类型导出
函数/类,涉及概念复杂,先过
泛型
- 多用于函数中,为了类型复用,使参数,以及返回值能在调用时指向泛型类型
类型编程套
模式匹配提取
对于数组,一般常用于去直接提取,特定位置的元素,字符串,常用于提取或构造新类型,函数类型,可提取参数类型,以及返回值类型等
重新构造做变化
其实就是配合extedns 约束, 配合infer 提取,再重新生成一个新类型。