TypeScript 词条目录
前端Wiki/词条/keyof 操作符

keyof 操作符

定义取出一个对象类型的所有键组成联合类型

keyof 是 TS 的类型级运算符,作用于对象类型时返回其全部键的字面量联合:keyof { name: string; age: number } 得到 name 与 age 的联合。它常与泛型约束搭配,写一个函数只允许传入对象已有的键,拼错属性名时编译器立刻提示,这是类型安全取值的核心手段。

keyof 的真正威力在与工具类型结合:Partial、Pick、Omit 内部都用 keyof 遍历键。配合 in 还能写映射类型:type Nullable = { [K in keyof T]: T[K] | null }。日常开发中 keyof 经常出现在通用取值函数、状态管理工具的类型定义里,是进阶类型编程的入口。

JavaScript
type User = { name: string; age: number };
type UserKey = keyof User;    // 'name' | 'age'

function get<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

const u: User = { name: 'tom', age: 3 };
get(u, 'name');    // OK,返回 string
// get(u, 'tel');  // 报错:tel 不属于 User 的键
⚠ 常见误区
🔗 相关词条泛型约束与默认值Partial Pick 与 Omit
← 返回来源章节泛型约束与默认值