是否可以在接口类型本身上使用Object.keys来获取该对象类型的所有属性?
export interface Apple{
id: number;
name: string;
status: string;
}
Object.keys(Apple)
预期的输出将是[“ id”,“ name”,“ status”],就像普通的Object.keys一样。我似乎找不到实现此目的的方法或文档。
答案 0 :(得分:2)
这是不可能的,因为TypeScript仅在开发时出现。将代码转换为JavaScript后,将无法在运行时引用回TypeScript类型。
答案 1 :(得分:2)
从文档中,我看到以下Object.keys()
的返回值:
代表给定对象的所有可枚举属性的字符串数组。
来源:Object.keys()。
例如,这意味着如果您有一个从JavaScript实例化的类,则可以将键放入数组,但不能从接口(从TypeScript)获得键:
let redApple = new Apple();
let keys = Object.keys(redApple);
let classKeys = Object.keys(Apple);
console.log('keys of the instance', keys);
console.log('keys of the class', classKeys);
function Apple() {
this.id = '';
this.name = '';
this.status = '';
}
我们应该始终记住,最后TypeScript将被转换为JavaScript。