给出以下类型:
class Foo {
constructor(
private one: string,
private two: string,
private three: string) {
}
}
如何拥有一个其值是类型属性的数组?
例如我需要能够得到一个数组:
[“一个”,“两个”,“三个”]
请注意,我需要从类型而不是实例中提取属性,否则我可以简单地使用Object.keys(instanceOfFoo)
。
答案 0 :(得分:6)
您可以使用Reflect.construct()
获取密钥,然后使用Object.keys()
将其转换为数组。
注意:如果密钥没有默认值,则不会生成,如您在four
中看到的那样。
class Foo {
constructor() {
this.one = ''
this.two = ''
this.three = ''
this.four
}
}
console.log(Object.keys(Reflect.construct(Foo, [])))
答案 1 :(得分:1)
扫描Object.keys(Foo.prototype)
答案 2 :(得分:1)
如果您只是要列出一类的字段名称,则可以使用以下内容:
article.tplx
希望有帮助。
答案 3 :(得分:1)
您需要实例化 const a = new Foo();
并使用 Object.keys
class Foo {
constructor(
private one: string,
private two: string,
private three: string) {
}
}
const a = new Foo();
console.log(Object.keys(a)); // ["prop"]
编辑: 如果您想从类型中获取数据,那是不可能的,因为一旦代码被编译,类型将不再可用。
答案 4 :(得分:1)
由于上面的代码将被转换为以下js代码:
var Foo = (function () {
function Foo(one, two, three) {
this.one = one;
this.two = two;
this.three = three;
}
return Foo;
}());
我首先使用const c = Foo.prototype.constructor
提取构造函数,并从中获取参数名称。 This线程显示了如何执行此操作。