用途:这是一份 TypeScript 编码规范技能,针对“字符串类型过宽”的问题,指导在属性、函数参数和对象键上使用更精确的类型。
主要能力:用字符串字面量联合(如 type RecordingType = 'studio' | 'live')表达有限取值;用 keyof T 约束对象键参数;用模板字面量类型匹配模式(如 type ApiRoute = ${HttpMethod} /${string});对日期等应改用 Date 而非 string。收益包括捕获拼写错误、提供 IDE 自动补全、让类型本身充当文档。
使用方式:当属性或参数只有有限合法取值、出现“stringly typed”代码、或字符串参数没有自动补全时应用。迁移步骤为:找出取值有限的 string,定义联合类型,替换使用处,再修复由此暴露的错误。泛型键参数可写成 function pluck<T, K extends keyof T>(records: T[], key: K): T[K][],以获得精确返回类型。
适用场景:定义有限取值的属性、接受特定字符串的函数参数、对象键或属性名操作。
限制与边界:真正可为任意字符串的字段(如艺术家名、标题)仍应使用 string;用户输入应在边界处校验后再在内部使用精确类型。资料未提供安装命令、平台或收费信息。该技能基于 Dan Vanderkam《Effective TypeScript》第 35 条。