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

TypeScript中如何将参数Schema转为模板字面量类型交集映射?

API配置系统的TypeScript类型定义问题

我正在为API配置系统做方案实验,需要帮助定义配置对象的TypeScript类型。注:该API为资源/端点配置,每个资源/端点的指定路径必须包含特定参数,以下以TypeScript术语展开说明。

核心问题:配置对象的每个属性都有一个嵌套属性,必须包含特定子串。我定义了如下Schema对象,用于指定嵌套属性需包含的子串(每个子串需用大括号包裹,如{id}):

const pathsSchema = {
  foo: {
    params: ["id"], // 对应子串为`{id}`
  },
} as const;

(我从该对象生成类型,若有需要,可直接使用类型而非对象)

对应的配置对象示例如下:

const config = {
  foo: {
    path: "foo?id={id}",
  },
};

单个子串的场景很简单,可通过以下类型定义实现:

type Path<Param extends string> = `${string}{${Param}}${string}`;

type Paths<Schema = typeof pathsSchema> = {
  [Name in keyof Schema]: {
    path: Path<Schema[Name]["params"][0]>;
  };
};

原本多子串场景需生成所有排列组合,这并不合理,但后续发现模板字面量类型可相交(感谢Alex Wayne的提示)。因此我的核心问题变为:如何将这种“名称-字符串数组”映射的Schema,转换为“名称-模板字面量类型交集”的映射?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:16:07