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

如何在TypeScript中简化具有相同键集的两个对象代码?

TypeScript简化同结构不同值对象的方案

针对你拥有相同键集但值不同的两个对象,TypeScript可以通过以下几种方式简化代码,同时保证类型安全:

1. 定义公共类型约束结构

首先声明一个类型别名或接口来统一对象的结构,这样既避免重复书写键名,又能在创建对象时自动校验结构是否正确:

// 根据实际值类型调整,比如number、boolean等
type ActionItem = {
  action: string;
  item: string;
};

// 基于公共类型创建对象
const obj1: ActionItem = {
  action: 'value1',
  item: 'value2'
};

const obj2: ActionItem = {
  action: 'value3',
  item: 'value4'
};

如果后续需要修改键名,只需在ActionItem中修改一次,所有关联对象都会同步校验。

2. 用工厂函数批量创建对象

如果需要创建多个同结构对象,使用工厂函数可以进一步减少重复代码:

type ActionItem = {
  action: string;
  item: string;
};

// 工厂函数接收值参数,返回符合结构的对象
const createActionItem = (action: string, item: string): ActionItem => ({
  action,
  item
});

// 快速创建对象
const obj1 = createActionItem('value1', 'value2');
const obj2 = createActionItem('value3', 'value4');

3. 用配置对象管理多场景实例

如果这两个对象对应不同业务场景,可以将它们统一放在一个配置对象中,方便按场景调用:

type ActionItem = {
  action: string;
  item: string;
};

// 按场景分类存储对象
const scenarioItems: Record<string, ActionItem> = {
  scenarioA: {
    action: 'value1',
    item: 'value2'
  },
  scenarioB: {
    action: 'value3',
    item: 'value4'
  }
};

// 业务中根据场景获取对应对象
const currentItem = scenarioItems.scenarioA; // 切换场景只需修改键名

注:你提供的示例代码中obj2的item值存在语法错误(空格和多余分号),实际使用时需要修正为合法的变量或字面量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:45:41