在TypeScript中有一個類(例如WikipediaSearchResult
),它可以訪問它們嗎?也許這個問題有點幼稚,但我想知道如果我能不重複的屬性名稱寫下面的代碼:在TypeScript中從類中讀取屬性名稱?
function mergeTo(from:any, to:any={}, properties:Array<string>=[]) {
if (!!from) {
for (var property of properties) {
// no deep copy here ;-)
to[property] = from[property];
}
}
}
class WikipediaSearchResult /* implements IWikipediaSearchResult */ {
lang:string;
summary:string;
title:string;
wikipediaUrl:string;
constructor(obj?:any) {
mergeTo(obj, this, [
// --> How to avoid this list? <--
'lang', 'summary', 'title', 'wikipediaUrl'
]);
}
}
var result = new WikipediaSearchResult({
title: 'Zürich',
wikipediaUrl: 'https://en.wikipedia.org/wiki/Z%C3%BCrich'
});
console.log(result);
當然也有一些第三方庫,如Underscore.js,但它例如不同_.clone(...)
因爲我只想克隆特定屬性並忽略obj
分別提供的所有其他屬性from
。
另一種方法可能是使用例如_.create(WikipediaSearchResult.prototype, { title: 'Zürich' })
,還沒有嘗試過,但它會使用JavaScript原型屬性。使用TypeScript內部機制會很好。
我想出的一個想法是創建一個「虛擬」實例並閱讀它的關鍵。我想知道是否有人提出更好的變體?
你爲什麼不重複從? '(var property in from){ to [property] = from [property]; }' –
'from'('any')可能有更多的屬性,不應該在'to'中設置 –