[英]In TypeScript, how can I automatically assign object properties to my class?
假設我有一個如下課程:
class Company {
name: string;
url: string;
address: string
constructor() {
}
}
然后,我從數據庫中檢索一個對象,該對象包含類的某些或全部屬性,例如
{name: "Acme", url: "www.acme.com"}
有沒有一種方法可以自動從對象構造類?
目前,我知道我可以做類似的事情:
const company = new Company();
const object = {name: "Acme", url: "www.acme.com"}; // in reality retrieve from database
for (const key in object) {
if (key == "name") {
company.name = object[key];
}
if (key == "url") {
company.url = object[key];
}
}
但這不是很優雅,並且在大量對象屬性上變得笨拙。
有自動的方法嗎?
根據您的方法進行調整:
const company = new Company();
const someObject = { name: "Acme", url: "www.acme.com" };
let legitKeys: Array<keyof Company> = [
'name','address','url'
];
for (const key in someObject) {
if (legitKeys.indexOf(key as keyof Company) !== -1) {
company[key] = someObject[key];
}
}
“公司的密鑰”類型用作安全網,因此您不能偶然將不是公司密鑰的字符串添加到legitKeys數組中。
我覺得還有更好的方法,例如寫if語句的更優雅的方法。
要使用noImplicitAny擺脫編譯器錯誤,您可以使用此方法(仍然感覺可以做得更好):
class Company implements IndexSignature {
[key: string]: any;
...
}
interface IndexSignature {
[key: string]: any;
}
const someObject = {
name: "Acme", url: "www.acme.com"
} as IndexSignature;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.