TECHFLOW
JOURNAL
返回列表
开发
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 = 类型检查 + 保留窄类型推断,是类型断言的更安全替代。

评论交流 (0)

T

TECHFLOW.BLOG