-
keyof 操作符:
- 获取对象类型的所有键的联合类型
- 用于获取对象类型的键集合
- 基本用法
interface Person { name: string; age: number; address: string; } type PersonKeys = keyof Person; // "name" | "age" | "address"
- 使用示例
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } const person: Person = { name: "John", age: 30, address: "New York" }; const name = getProperty(person, "name"); // 类型安全 const age = getProperty(person, "age"); // 类型安全
-
typeof操作符
- 获取变量或表达式的类型
- 用于从值中提取类型
// 基本用法 const colors = { red: "#FF0000", green: "#00FF00", blue: "#0000FF" }; type ColorType = typeof colors; // 等价于: // type ColorType = { // red: string; // green: string; // blue: string; // } // 使用示例 const colorKeys: keyof typeof colors = "red"; // 类型安全
-
组合使用
// 获取对象键的类型 const user = { name: "John", age: 30 }; type UserKeys = keyof typeof user; // "name" | "age" // 函数参数类型 function updateUser<K extends keyof typeof user>( key: K, value: typeof user[K] ) { user[key] = value; } updateUser("name", "Jane"); // 正确 updateUser("age", 25); // 正确 updateUser("name", 123); // 错误:类型不匹配