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

TypeScript中如何用字符串字面量引用命名接口构建注册表?

TypeScript 根据字面量键关联对应接口类型的注册表实现

先看你的场景:已经定义了两个接口,想要构建一个注册表,让每个以接口名为键的对象下,所有子项都对应到该接口类型。

首先需要建立字面量名称与对应接口类型的映射关系,这是核心步骤:

interface Int1 {}
interface Int2 {}

// 字面量到接口类型的映射,把接口名和接口本身绑定
type InterfaceMap = {
  "Int1": Int1,
  "Int2": Int2
}

接下来基于这个映射类型,就能写出你想要的RegistryType:

type RegistryType = {
  // 遍历InterfaceMap的所有键
  [theKey in keyof InterfaceMap]: {
    // 子项的类型自动对应到当前键关联的接口
    [x: string]: InterfaceMap[theKey]
  }
}

现在用这个类型定义你的注册表,TypeScript会自动做类型校验:

const Registry: RegistryType = {
  "Int1": {
    "obj1": {},
    "obj2": {}
  },
  "Int2": {
    "obj1": {}
  }
}

如果后续需要新增接口,只需要在InterfaceMap里添加新的键值对即可,比如新增Int3接口,就给InterfaceMap加上"Int3": Int3,RegistryType会自动适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:27:03