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

如何在不重复代码、不使用联合类型的情况下扩展接口仅修改单个值?

创建仅单个值不同的相似接口的最佳方案

针对你提出的需求——创建仅单个字段值不同的相似接口,同时避免代码重复且不使用联合类型,泛型接口是最优雅且可扩展的解决方案。

实现思路

将接口的公共结构抽离为一个泛型基础接口,把差异字段(这里是type)作为泛型参数传入,通过指定不同的泛型参数来生成具体的接口类型。这种方式既复用了代码,又能保证每个接口的独立性。

代码示例

首先定义包含所有公共字段的泛型基础接口:

// 泛型基础接口,T用于指定type字段的字面量类型
export interface BaseType<T extends string> {
  id: string;
  parentId: string;
  type: T;
  data: string[];
  dataA: string[];
  dataB: string[];
  dataC: string[];
  dataD: string[];
  dataE: string[];
}

然后通过指定不同的泛型参数,快速生成所需的具体类型:

// 生成type为'a1'的接口
export type FirstType = BaseType<'a1'>;

// 生成type为'a2'的接口
export type SecondType = BaseType<'a2'>;

// 若后续需要新增同结构接口,只需一行代码扩展
export type ThirdType = BaseType<'a3'>;

方案优势

  • 无代码重复:所有公共字段只需在基础接口中定义一次,无需重复编写
  • 类型明确:每个生成的类型都是独立的,不需要依赖联合类型来区分
  • 扩展性强:新增同结构的接口仅需指定新的泛型参数,维护成本极低
  • 类型安全:type字段被严格限定为传入的字面量类型,避免非法值

对比原继承写法

你提供的继承写法在仅两个接口时可行,但泛型方案更适合场景扩展:当需要生成多个同结构不同type的接口时,泛型无需反复声明继承并覆盖字段,逻辑更简洁清晰。

内容的提问来源于stack exchange,提问作者Richardson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:31:12