[英]How can I get properties of a type as an array in Typescript?
给定以下类型:
class Foo {
constructor(
private one: string,
private two: string,
private three: string) {
}
}
我怎样才能拥有一个其值是类型属性的数组?
例如,我需要能够得到一个数组:
['一二三']
注意我需要从类型而不是实例中提取属性,否则我可以简单地使用Object.keys(instanceOfFoo)
。
您可以使用Reflect.construct()
获取密钥,然后使用Object.keys()
将其转换为数组。
注意:如果密钥没有默认值,则不会生成它,如您在four
中看到的那样。
class Foo { constructor() { this.one = '' this.two = '' this.three = '' this.four } } console.log(Object.keys(Reflect.construct(Foo, [])))
扫描 Object.keys(Foo.prototype)
如果您只是从 class 中列出该字段的名称,则可以使用以下命令:
let fields = Object.keys(myObj) as Array<MyClass>;
希望能帮助到你。
您需要实例化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"]
编辑:如果你想从类型中获取它是不可能的,因为一旦编译代码,类型将不可用。
由于上面的代码将被转换为以下 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
提取构造函数,并从中获取 arguments 的名称。 这个线程显示了如何做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.