在我的Angular 2 - Typescript應用程序中,我有一個接口。如何正確設計其屬性設置在不同時間(Angular 2應用程序)的Typescript接口?
someType.ts
export interface SomeType {
attr1: string;
attr2: number;
attr3?: SomeType2
}
並使用SOMETYPE爲類型檢查的服務。
DataService.ts
import {SomeType} from './someType;
export class DataService {
storedData: SomeType;
setFirstStepData(<data>){
// here is where I'm not sure which is the right design choice
// storedData. ...
}
getData(stepNumber: number){
switch(...) {
// ...
}
}
}
最後我會從服務中獲得實際的對象,以便所有屬性將設置特殊情況除外。但是,storedData(其中包含臨時的「內存中」數據)在多個組件中初始化。
正是我應該像這樣工作:
firstComponent設置storedData的attR1和attR2位通過DataService的。然後路由到secondComponent,它將通過DataService存儲attr3。最後,當所有的屬性都設置,數據被髮送到後端
我看到這裏有兩個可能的選擇:
集SOMETYPE與所有可選屬性,除了那些我知道將被設置確定由第一個組件使用DataService並創建。那麼通過DataService的各種組件將設置storedData的各個屬性,因此不會給出類型錯誤。這似乎是一個可行的解決方案,但直接在的DataService一點點「扭曲」
,而不是使用storedData我會用attR1位,attR2位等。然而,由於實際上SOMETYPE模型從後端匹配它聽起來不是一個很好的設計選擇
哪種解決方案是在設計水平更好?如果他們兩人都不夠好,那麼的權利/最適當的方式來做到這一點?
感謝您的回答。你能否提供一個具體的例子來說明如何用工廠做到這一點?我在文檔中找不到太多 – dragonmnl
有一個問題:是_SomeType_類型還是_any_類型的可選attr3屬性? –
它是一個具有多個屬性的類(就像SomeType但具有不同的屬性)。我編輯的定義,使其更清晰 – dragonmnl