如何利用TypeScript接口的键创建新的联合类型?
如何从TypeScript接口提取键并生成联合类型?
TypeScript 内置了专门的工具类型keyof来解决这个需求,直接用它就能提取接口的所有键并生成字符串字面量联合类型。
针对你的场景,实现方式非常简单:
interface A { name: string; email: number; } // 直接用 keyof 提取接口A的键 type B = keyof A;
此时B的类型就等价于'name' | 'email',完全符合你的要求。
补充说明
keyof操作符会返回目标类型的所有公共属性名组成的联合类型,不仅适用于接口,也能作用于type定义的对象类型。- 如果需要把这个联合类型作为函数参数的类型约束,可以直接这样用:
function getValue(obj: A, key: keyof A) { return obj[key]; } // 调用时只能传入'name'或'email',传入其他值会触发类型报错 getValue({ name: 'Alice', email: 12345 }, 'name');
内容的提问来源于stack exchange,提问作者Faiz Ahmed
相关产品推荐
相关产品推荐

