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

如何定义包含指定子类型键的动态TypeScript Extra类型?

定义动态可选的Extra类型

现有以下TypeScript子类型:

type material = string

type weight = {
  unit: string
  value: number
}

type dimensions = {
  w: number
  h: number
  l: number
  unit: string
}

需求是让Extra类型包含上述类型名称作为键,对应值为相应类型,同时Extra是动态类型,可包含其中1个或多个键,不允许出现未定义的键。

解决方案

通过Partial工具类型结合对象类型定义即可实现需求:

type Extra = Partial<{
  material: material;
  weight: weight;
  dimensions: dimensions;
}>

验证示例

  • 符合要求的合法定义:
const Ext1: Extra = {
   material: "iron"
}

const Ext2: Extra = {
   material: "aluminium",
   dimensions: {
      w: 110,
      h: 30,
      l: 200,
      unit: "mm"
   }
}
  • 不符合要求的非法定义(包含未声明的unknown_key,会触发TypeScript类型检查错误):
const Ext3: Extra = {
    material: "iron",
    unknown_key: unknown_value
}

说明

  • Partial<T>工具类型会将目标类型T的所有属性转为可选状态,让Extra可以灵活包含指定键中的任意1个或多个。
  • 明确绑定每个键与对应类型,既保证赋值时的类型匹配,也直接限制了不能添加未定义的额外键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:37:34