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