TS satisfies 运算符:类型检查的艺术
学习 TypeScript satisfies 运算符,在保持类型推断的同时进行类型验证。 · 难度:入门 · +15XP
satisfies 运算符介绍
satisfies 运算符是 TypeScript 4.9 引入的特性,它允许我们验证一个值的类型是否符合某个类型,同时保留该值的具体类型推断。
为什么需要 satisfies?
传统方式中,使用类型注解会丢失更具体的类型信息,而不使用则无法进行类型检查。satisfies 解决了这个矛盾。
对比示例
| 方式 | 优点 | 缺点 |
|---|---|---|
| 无类型注解 | 保留最具体类型 | 无法验证结构 |
| 显式类型注解 | 验证结构 | 丢失具体类型 |
| satisfies | 两者兼得 | 无 |
代码示例
// 传统方式:类型注解
const config1: Record<string, string | number> = {
host: 'localhost',
port: 3000
};
// config1.host 类型是 string | number,无法直接使用字符串方法
// 使用 satisfies
const config2 = {
host: 'localhost',
port: 3000
} satisfies Record<string, string | number>;
// config2.host 类型是 string,可以调用 .toUpperCase()
// config2.port 类型是 number,可以调用 .toFixed()
console.log(config2.host.toUpperCase());
console.log(config2.port.toFixed(2));
练习提示
创建一个对象,包含 'name'(字符串)和 'age'(数字),使用 satisfies 确保它符合 { name: string, age: number },然后尝试访问 name 的 length 属性和 age 的 toFixed 方法。