TypeScript 中的 satisfies 操作符解决了什么问题?从类型标注到类型收窄的实践
在 TypeScript 4.9 之前,我们经常在类型安全和类型推断之间二选一:要么给变量加显式类型注解,结果丢失了字面量推断和精确的属性类型,要么完全依赖推断,结果又拿不到类型检查。比如一个配置对象,你希望它的某些字段只能是固定的几个字符串,但同时又想让 TypeScript 推断出每个字段的具体字面量类型,方便在后面做条件分支时收窄。satisfies 操作符就是用来解决这个矛盾。它允许你检查一个表达式是否满足某个类型,但不改变表达式本身的推断类型。这篇文章会从实际场景出发,说明什么时候用 as const 加类型注解会出问题,satisfies 在路由配置、主题定义、API 响应映射里的...