TS satisfies 运算符:类型安全与推断并存
学习 satisfies 运算符,在保持类型推断的同时验证类型约束。 · 难度:入门 · +15XP
satisfies 运算符概述
TypeScript 4.9 引入了 satisfies 运算符,它允许你检查表达式的类型是否满足某个类型约束,同时保留该表达式的最具体类型。这解决了之前使用类型断言或类型注解时丢失精确类型的问题。
为什么需要 satisfies
传统方式:使用类型注解会缩小类型,使用类型断言可能不安全。satisfies 提供了一种平衡方案。
使用示例
type Colors = 'red' | 'green' | 'blue';
type Palette = Record<string, Colors>;
const palette = {
primary: 'red',
secondary: 'green',
} satisfies Palette;
// palette.primary 的类型仍然是 'red'(具体字面量),而不是 Colors
| 方式 | 类型推断 | 类型安全 |
|---|---|---|
| 注解 | 丢失具体类型 | 安全 |
| 断言 | 保留具体类型 | 可能不安全 |
| satisfies | 保留具体类型 | 安全 |
练习提示:使用 satisfies 定义一个对象,确保其属性值都是数字,同时保留字面量类型。