TypeScript:如何基于接口成员快速约束变量取值类型?
TypeScript 接口成员名类型的简便定义方案
可以直接使用 TypeScript 内置的 keyof 操作符解决这个问题,它会自动提取接口的所有成员名并生成对应的联合类型,无需手动枚举每一个成员。
具体实现
先保留你的接口定义:
interface Field { code: string name: string // 其他成员... }
定义变量时,直接用 keyof Field 作为类型:
let key: keyof Field;
效果说明
keyof Field等价于手动编写的"code" | "name" | ...(包含接口所有成员名的联合类型)- 当接口
Field新增或删除成员时,keyof Field会自动同步更新,无需手动修改变量的类型定义 - 赋值时仅允许使用接口存在的成员名:
key = "code"; // 合法 key = "name"; // 合法 key = "invalidKey"; // 编译报错,Field接口无此成员
内容的提问来源于stack exchange,提问作者Catur Wicaksono
相关产品推荐
相关产品推荐

