別のblogpostsと公式のngnx/storeのドキュメントでリンクされている例では、私は以下のアプローチを "標準的な"方法として見いだしました。ログイン後に店舗にユーザーを追加することに関連するコードを投稿します。ngrx/storeモデル(角2)でインターフェイス定義を強制する方法はありますか?
export interface User {
id: number;
username: string;
email: string;
};
その後
私は、ユーザーのために減速を作成した(:
export interface AppStore {
user: Observable<User>;
};
これは、Userモデルである:
だから最初に私は、我々のアプリケーションによって処理されるすべてのオブジェクトを表す、AppStoreのインターフェイスを作成しましたペイロードにはユーザーID、電子メール、ユーザー名が含まれます)
export const user: ActionReducer<User> = (state: User, action: Action) => {
switch (action.type) {
case ADD_USER:
return action.payload;
default:
return state;
}
};
最後に、このように店から彼は、ユーザー 'オブジェクト:
user : User;
constructor(private store: Store<AppStore>) {
this.user = <Observable<User>>this.store.select('user');
}
私は、次のコードに減速を変更する場合には、無意味なプロパティは私の意見では、ユーザーインターフェイスがこれを避ける必要がある場合でも、最終的なオブジェクトに入りました発生する。
export const user: ActionReducer<User> = (state: User, action: Action) => {
switch (action.type) {
case ADD_USER:
return Object.assign({},action.payload, meaninglessProperty = 'abcd');
default:
return state;
}
};
だから、私の質問は:AppStoreのインターフェイスは/視覚化する我々のアプリの全体的な店舗の構造を理解したりngrxストアが実際にAppStoreでの特性は、独自のインタフェース契約を尊重することを確認しないためのだけの方法ですか?
- 場合によっては、私は何が欠けていますか?
- 場合によっては、インタフェース定義が実行時に強制されるように変更することができますか?
インターフェイスをチェックするとコードが「安全」になり、間違いのリスクが大幅に軽減される、より複雑なシナリオがあるため、これを尋ねます。