类型推断在什么情况下会变宽,如何保留字面量信息并避免错误断言
简答题中等494 次浏览
参考答案与解析
# 核心结论
TypeScript 的类型推断会结合声明是否可变、表达式所处的上下文、赋值目标和控制流决定结果。字面量信息最常在可变位置或过早使用宽泛注解时丢失:let status = "ready" 通常推断为 string,而 const status = "ready" 可保留为字面量类型 "ready"。但 const 只禁止变量重新赋值,对象属性默认仍可修改,所以 const action = { type: "add" } 中的 type 通常会拓宽为 string。要递归保留字面量并生成只读类型,可使用 as const;要校验结构又尽量保留表达式精度,优先考虑 `sat
