[英]Angular 2 instantiate class with empty values
如何將成員實例化為具有空值的類?
我實例化了
public members = new MemberClass();
但控制台顯示成員:{}所以我無法設置默認的空值
所以基本上我試圖復制一個空結構,如:
this.members = [
{
"Name" : "", "Id" : "", "Team" : "",
"Cases" : {
"history" : []
}
}
];
使用接口;)這是一種可以使用屬性設置為Member
的空對象創建數組的方法。 我不知道用例,至少我沒有設置空對象/數組模型的屬性,但在這里我們去:)
首先你的接口是:
export interface Member {
Id: string;
Name: string;
Cases: Case[];
}
export interface History {
Id: string;
CaseNumber: string;
}
export interface Case {
History: History[];
}
然后創建3個函數來設置屬性:
export function createMember(Id?:string,Name?:string, Cases?:Case[]): Member {
return {
Id,
Name,
Cases[createCase()]
}
}
export function createCase(History?:History[]): Case {
return {
History[createHistory()]
}
}
export function createHistory(Id?: string,CaseNumber?:string): History {
return {
Id,
CaseNumber
}
}
現在在您的組件中,您可以調用函數createMember
,然后調用另外兩個函數:
members = [createMember()];
PS,根據你的型號,以下不是Member
模型-array,他們的名字和搭建不匹配,但我已根據你提供的模型創建了上面的內容。
請記住,您在那里使用接口,而不是類。 在Typescript中,就像在Javascript中一樣,空對象只是{}
所以,要做你想要的,試試這個: let history: History = { Id:"", CaseNumber:""};
如果您試圖忽略任何這些屬性,您將收到他們需要的錯誤。 如果您希望在實例化時接口的屬性是可選的,請更新您的接口,如下所示: CaseNumber?: string;
進一步澄清:類是一種具體類型,您可以像在任何語言中一樣實例化和使用。 如果您需要屬性上的構造函數或默認值,則應使用export class MyType {}
。
但是,根據我的經驗,我發現在大多數情況下,Typescript中的接口比類更有用。 這樣做的原因是您可以在開發時對它們進行編碼,但是當您發貨時它們不包含在您的軟件包中(注意這完全取決於您的用例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.