TypeScript 中 as const 与 satisfies 的配合使用:既保留字面量类型又校验结构
在写 TypeScript 时经常遇到一种两难:定义一个配置对象或常量映射,希望它的属性值被推断为字面量类型(比如 'GET' 而不是 string),同时又想确保它符合某个接口或约束。直接用类型注解 const config: Config = {...} 会把类型拓宽,字面量丢失;加 as const 能保留字面量,但不会校验结构。TypeScript 4.9 引入的 satisfies 算子正好补上了这块空白,它允许你在不改变推断结果的前提下检查表达式是否满足某个类型。这篇文章会从几个真实场景出发,讲清楚 as const、satisfies 各自的行为,以及为什么把它们搭配使用能解决配...