如何在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
相关产品推荐
相关产品推荐

