繁体   English   中英

如何在 Typescript 中将类型的属性作为数组获取?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM