2017-11-30 6 views
1

私はIPreferencesというインターフェースを持っています。それは次のようになります。私は、ユーザーが自分の好みを更新し、1つのまたは複数のフィールドを更新することができますのでDRYを維持したまま、2つのバージョンのインターフェースを作成できますか?

export interface IPreferences { 
    genres: Genres[], 
    singers: Singer[], 
    volume: number 
} 

、私は

export interface IPreferencesUpdateRequest { 
    genres?: Genres[], 
    singers?: Singer[], 
    volume?: number 
} 

のように見えるがあるため、私、これは悪いですインターフェイスIPreferenceUpdateRequestを作成しました2つのほぼ同一のインターフェースを持つようになりました。

とにかくこれを行うにはどうすればいいですか?DRY

答えて

1

はい! Partial<IPreferences>を使用してください。 TypeScript standard libraryで定義されたPartial<T>タイプは、オプションのバージョンにTのすべてのプロパティをマップmapped typeです:

export type IPreferencesUpdateRequest = Partial<IPreferences> 

希望に役立ちます。がんばろう!

+0

すごく素晴らしいです。このユースケースは、標準ライブラリに型を作成するのに十分なものであることを認識していませんでした。ありがとう! – CodyBugstein

1

はいtypescriptですで定義されたPartial<T>タイプあなたは電子非常にDRY方法でこれを可能にする:

export type IPreferencesUpdateRequest = Partial<IPreferences>; 
関連する問題