You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:03:20