用途:帮助理解 TypeScript 从值推断类型时的“类型拓宽”行为,解决字面量被推断为 string、number 等更宽类型,以及 const 与 let 推断结果不同、对象属性或数组元素类型过宽、元组退化为数组等问题。
主要能力:说明拓宽规则——let 变量把字面量拓宽为基础类型,const 对原始类型保留字面量类型,对象属性与数组元素即使使用 const 也会拓宽,混合数组得到联合类型;并给出控制手段:用 const 声明不变值、用类型注解显式指定类型、用 as const 获得完整字面量推断(对象属性变为 readonly 字面量、数组变为 readonly 元组)、用 satisfies 在检查结构的同时保留字面量推断。
使用方式:当遇到“字面量不可赋值”的类型错误时,可改用 const、添加类型注解、对值或属性使用 as const,或对对象使用 satisfies。资料中的示例包括 makeRequest 接收 'GET' | 'POST' | 'PUT'、configure 接收 mode 为 'development' | 'production'、setPoint 接收 [number, number] 元组等场景。
适用场景:排查类型推断过宽、const 与 let 推断差异、对象属性与数组元素类型不符预期、元组变数组、联合字面量意外拓宽等。
限制:资料未提供该技能的安装命令、运行环境、平台支持、收费方式或效果数据;内容基于《Effective TypeScript》第 20 条,具体行为以实际 TypeScript 版本为准。