我有一个名为IPreferences
的界面。它看起来像这样:
export interface IPreferences {
genres: Genres[],
singers: Singer[],
volume: number
}
由于我允许用户更新其首选项并仅更新一个或多个字段,因此我创建了一个类似于
的界面IPreferenceUpdateRequest
export interface IPreferencesUpdateRequest {
genres?: Genres[],
singers?: Singer[],
volume?: number
}
但这很糟糕,因为我现在有两个几乎相同的界面。
我有没有这样做,但留下DRY?
答案 0 :(得分:1)
是的,typescript中定义的Partial<T>
类型允许您以非常干的方式进行此操作:
export type IPreferencesUpdateRequest = Partial<IPreferences>;
答案 1 :(得分:1)
是的!使用Partial<IPreferences>
。 TypeScript standard library中定义的Partial<T>
类型是mapped type,它将T
的所有属性映射到可选版本:
export type IPreferencesUpdateRequest = Partial<IPreferences>
希望有所帮助;祝你好运!