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

如何基于对象真实键优化TypeScript类型数组创建并减少重复?

优化方案

要避免重复定义AvailableComponents类型,你可以基于sectionTypes的键动态生成该类型,无需手动列出每个组件。

方案1:生成联合类型(推荐)

如果AvailableComponents只需表示所有可能的UseComponent类型(不要求固定顺序或元组结构),直接利用keyof操作符即可:

const sectionTypes = {
  comp1: Comp1,
  comp2: Comp2,
} as const;

// 提取sectionTypes的键类型
type SectionKeys = keyof typeof sectionTypes;

// 动态生成AvailableComponents联合类型
type AvailableComponents = UseComponent<SectionKeys>;

这个类型等价于UseComponent<'comp1'> | UseComponent<'comp2'>,涵盖了所有可能的组件类型,后续新增组件时只需修改sectionTypes,无需更新AvailableComponents。

方案2:生成元组类型(保留固定顺序)

如果必须保持原有的元组结构(固定顺序和长度),可以通过常量元组映射实现:

const sectionTypes = {
  comp1: Comp1,
  comp2: Comp2,
} as const;

// 定义与sectionTypes键顺序一致的常量元组
const sectionKeys = ['comp1', 'comp2'] as const;

// 映射元组类型生成目标元组
type AvailableComponents = {
  [Index in keyof typeof sectionKeys]: UseComponent<typeof sectionKeys[Index]>;
};

此时AvailableComponents的类型与原代码完全一致:[UseComponent<'comp1'>, UseComponent<'comp2'>]。后续新增组件时,只需在sectionTypes和sectionKeys中各添加一次即可,避免了重复定义UseComponent。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:46:03