关键词:TS 特性和能力
这个为何被作者列为了高阶范围的问题
原因如下:大多数纯写业务的同学, 可能就用到了interface
和type
最多加上enum
和泛型
;
TS 很多牛掰的特性, 是伴随做复杂的工具库, 或者处理复杂业务场景来的。
这里直接上干货:
-
Utility Types(工具类型):
- Partial<T>: 将类型 T 的所有属性变为可选。
- Required<T>: 将类型 T 的所有属性变为必选。
- Readonly<T>: 将类型 T 的所有属性变为只读。
- Record<K, T>: 创建一个具有指定键类型 K 和值类型 T 的新对象类型。
- Pick<T, K>: 从类型 T 中选择指定属性 K 形成新类型。
- Omit<T, K>: 从类型 T 中排除指定属性 K 形成新类型。
- Exclude<T, U>: 从类型 T 中排除可以赋值给类型 U 的类型。
- Extract<T, U>: 从类型 T 中提取可以赋值给类型 U 的类型。
- NonNullable<T>: 从类型 T 中排除 null 和 undefined 类型。
- ReturnType<T>: 获取函数类型 T 的返回类型。
- Parameters<T>: 获取函数类型 T 的参数类型组成的元组类型。
-
条件判定类型:
- Conditional Types(条件类型): 根据类型关系进行条件判断生成不同的类型。
- Distribute Conditional Types(分布式条件类型): 分发条件类型,允许条件类型在联合类型上进行分发。
-
Mapped Types(映射类型):根据已有类型创建新类型,通过映射类型可以生成新的类型结构。
-
Template Literal Types(模板文字类型):使用字符串模板创建新类型。
-
类型推断关键字:
- keyof 关键字:关键字允许在泛型条件类型中推断类型变量。
- instanceof:运算符用于检查对象是否是特定类的实例。
- in:用于检查对象是否具有特定属性。
- type guards:类型守卫是自定义的函数或条件语句,用于在代码块内缩小变量的类型范围。
- as:用于类型断言,允许将一个变量断言为特定的类型。
详细内容请参考这个文档: yanlele/node-index#75