簡體   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