lang
lang/typescript/types/index.md
medium
lang-typescript-types-index
TypeScript 进阶类型能力索引(泛型 / 工具类型 / 类型守卫 / 判别联合 / 枚举 / 断言 / 声明文件与 paths 别名)。Use when 设计可复用泛型类型 / 收窄联合类型 / 用判别联合建模状态 / 为配置定义类型别名
子项索引
| 子项 | 一句话 |
|---|---|
| generics skill | TS 泛型做"类型随入参变化"的复用(函数 / 组件 / hook / 工具类型),禁用 any 顶替 |
| utility-types skill | TS 内置工具类型派生新类型,禁手抄字段重复 interface |
| type-guard skill | 用类型守卫在分支前收窄联合类型:typeof / instanceof / in / 字面量比较 / 自定义谓词 x is T |
| discriminated-union skill | 判别联合用共同字面量字段(status/type)区分成员,switch 该字段自动收窄分支并配 never 穷尽检查 |
| enum-vs-const skill | 定义一组常量时优先 as const 对象 + 联合类型,少用 enum |
| as-const-assertion skill | 用 as const 把字面量收成只读窄类型,避免数组被拓宽成 string[]、对象字段退化为 string |
| declaration-and-paths skill | 为无类型 JS 库补 .d.ts 声明文件并配 tsconfig paths 别名替代深相对路径 |
TypeScript · 进阶类型
本层包含
| 子项 | 一句话 |
|---|---|
| generics | 泛型约束 extends / 默认参数 / 条件类型 infer |
| utility-types | Pick / Omit / Record / ReturnType / Partial |
| type-guard | 类型守卫 is / in / typeof,收窄 unknown |
| discriminated-union | 判别联合 tag 字段 + switch 穷尽 never |
| enum-vs-const | enum 坑 vs const 对象 + as const |
| as-const-assertion | as const 字面量收窄,防数组拓宽成 string[] |
| declaration-and-paths | .d.ts 声明文件 / tsconfig paths 别名 |
何时下钻
- 写可复用泛型函数/类型,约束类型参数 →
generics.md - 从已有类型派生新类型(挑字段/改可选/取返回值)→
utility-types.md - 运行时收窄 unknown / union,写
x is T谓词 →type-guard.md - 用带 tag 的联合建模状态机、API 响应、Result →
discriminated-union.md - 定义一组常量并要其类型,纠结 enum 还是对象 →
enum-vs-const.md - 需要字面量类型而非 string(路由表/配置/元组)→
as-const-assertion.md - 给无类型 JS 库补声明、配置
@/路径别名 →declaration-and-paths.md