用途:本技能聚焦 TypeScript v5+ 高级类型系统特性,适用于构建类型安全 API、复杂领域模型、精细类型推断与编译期保证;不覆盖基础语法、框架专属模式及运行时校验库(如 Zod 需单独使用)。前提假设为 TypeScript v5+、tsconfig.json 开启 "strict": true、目标 ES2020 或更高。
主要能力与原则:用条件类型做基于条件的选择;用映射类型系统化转换对象类型;用类型守卫(value is Type)做运行时检查并收窄类型;用可辨识联合实现类型安全状态机并支持穷尽检查;用品牌类型避免原始类型混用;优先用 unknown 而非 any;优先用类型守卫而非类型断言;保持类型可组合且浅层;将不可变数据结构标记为 readonly。
使用方式(模式示例):映射类型如 type Partial<T> = { [P in keyof T]?: T[P] };类型守卫如 function isString(value: unknown): value is string { return typeof value === 'string' };品牌类型如 type UserId = string & { readonly __brand: 'UserId' };可辨识联合如 type LoadingState = { status: 'idle' } | { status: 'loading' } | { status: 'success'; data: string[] } | { status: 'error'; error: Error }。
约束:必须开启严格模式、用 unknown 替代 any、尽量用类型守卫而非类型断言;建议联合/工具类型用 type、对象结构用 interface,保持类型可组合且浅层,标记 readonly,用品牌类型防止原始类型混用;避免使用 any、未经校验的类型断言、滥用泛型、深层类型嵌套(编译慢且难调试)。
协作:可与 zod 配合做带类型推断的运行时校验,作为 nextjs 类型安全 API 路由与 fastify 类型安全路由 schema 的补充。参考资源包括 TypeScript Handbook、Type Challenges、ts-toolbelt。