返回列表
开发
2024-06-18
5 分钟
1422
TypeScript satisfies 操作符详解
TypeScript 前端
问题背景
使用类型断言(as)会丢失具体类型信息;直接标注类型又可能拓宽推断结果。satisfies 正是为了解决这一矛盾而生。
对比示例
type Color = "red" | "green" | "blue" | [number, number, number];
const palette = {
red: [255, 0, 0],
green: "#00ff00",
} satisfies Record<string, Color>;
// red 仍被推断为 number[],而非 Color
const r = palette.red[0]; // ✅ 正常访问
如果改用类型标注:
const palette: Record<string, Color> = { ... };
const r = palette.red[0]; // ❌ Color 不一定是数组
使用场景
- 配置对象验证
- 枚举映射表
- 插件/策略注册
小结
satisfies = 类型检查 + 保留窄类型推断,是类型断言的更安全替代。