说我有以下界面
interface User {
name: string;
age: number;
address: string;
id: number;
}
我想获取界面的键,以便我可以创建它的枚举/映射,即
// somehow create `map`
// map.name should be 'name'
// map.age should be 'age'
答案 0 :(得分:0)
由于编译时存在User
接口,因此不能将该信息用作运行时映射对象。但是,您可以进行相反的操作。
首先创建一个地图对象作为User
的模板:
const userTemplate = {
name: '',
age: 0,
address: '',
id: 0
};
现在,您可以在模板上使用interface User
来推断typeof
类型,而不是写出User
:
type User = typeof userTemplate;
// equivalent to:
// type User = { name: string; age: number; address: string; id: number; }
您可以获取密钥并将其存储在运行时数组中:
const userKeys = Object.keys(userTemplate);
// ['name', 'age', 'address', 'id']
您还可以在编译时创建键的联合类型:
type UserKey = keyof User;
// equivalent to:
// type UserKey = 'name' | 'age' | 'address' | 'id'