TypeScript技巧:如何基于接口自动修改类型的可选属性
基于TypeScript接口自动维护可选属性相关类型
首先,用keyof操作符可以直接自动同步接口的所有字段,彻底替代手动枚举的SongFiled类型:
interface Song { songTitle: string; singer: string; album: string; duration: string; id: string; imgUrl?: string; operation?: string; } // 自动获取Song的所有键,接口更新时自动同步 type SongFiled = keyof Song; interface Column { prop: SongFiled; title: string; flex: string; isA?: boolean; }
如果需要单独区分可选属性和必选属性的类型,可以通过条件类型实现自动识别:
// 提取类型中的可选属性键 type OptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? K : never }[keyof T]; // 提取类型中的必选属性键 type RequiredKeys<T> = Exclude<keyof T, OptionalKeys<T>>; // 自动得到Song的可选属性集合:'imgUrl' | 'operation' type SongOptionalFields = OptionalKeys<Song>; // 自动得到Song的必选属性集合:'songTitle' | 'singer' | 'album' | 'duration' | 'id' type SongRequiredFields = RequiredKeys<Song>;
后续修改Song接口的属性(新增字段、删除字段、修改属性可选性)时,所有关联类型都会自动更新,无需手动逐个调整字段定义。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

