乐闻世界logo
搜索文章和话题

TypeScript 中的“keyof typeof”的作用是什么?

2 个月前提问
1 个月前修改
浏览次数18

1个答案

1

keyof typeof 在 TypeScript 中是一个非常有用的语法,它可以帮助我们获取一个对象或类中所有公共属性的联合类型。使得我们可以对对象的键进行类型安全的引用。

具体来说:

  • typeof 用于获取一个变量或对象的类型。
  • keyof 用于获取某种类型的所有键的联合。

组合在一起使用 keyof typeof 就是先通过 typeof 取得一个实体的类型,然后通过 keyof 获取这个类型所有键的集合。

例如,考虑以下代码:

typescript
const config = { host: 'localhost', port: 12345, name: 'server1' }; type ConfigKeys = keyof typeof config;

在这里,typeof config{ host: string; port: number; name: string },而 keyof typeof config 就是 'host' | 'port' | 'name'。这样 ConfigKeys 类型就代表了 config 中所有键的联合类型。

这种方式非常有用,尤其是在需要确保不会对对象的属性名称进行硬编码时。例如,如果需要编写一个函数来读取配置对象的任意属性,可以这样做:

typescript
function getConfigValue(key: ConfigKeys): string | number { return config[key]; } // 正确使用 const port = getConfigValue('port'); // 类型安全,返回类型为 number // 如果尝试使用不正确的键,TypeScript编译器将给出错误提示 const unknown = getConfigValue('unknown'); // 错误:类型“"unknown"”的参数不能赋给类型“"host" | "port" | "name"”的参数。

这样,我们在代码中引用 config 的任何键时都有了类型安全的保障,任何非法的键名在编译阶段就会被捕捉到。

2024年8月2日 14:10 回复

你的答案