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

如何在TypeScript中实现联合字符串类型的分隔符拼接泛型

TypeScript 实现联合类型字符串拼接泛型 Join<T, Separator>

可以实现这个泛型类型,核心是利用TypeScript的分布式条件类型和递归逻辑,遍历联合类型的所有成员并完成拼接。

实现代码

type UnionStr = 'foo' | 'bar' | 'baz';

type Join<T extends string, Separator extends string> = 
  T extends infer U extends string 
    ? (U extends any 
      ? `${U}${Exclude<T, U> extends never ? '' : `${Separator}${Join<Exclude<T, U>, Separator>}`}`
      : never)
    : never;

// 测试示例
type Test = Join<UnionStr, ','>; // 结果为 "foo,bar,baz"

代码说明

  • 通过T extends infer U extends string提取联合类型中的单个成员U
  • 使用Exclude<T, U>获取去掉当前成员后的剩余联合类型
  • 若剩余类型为never(即当前是最后一个成员),直接返回当前成员;否则拼接当前成员、分隔符,再递归处理剩余联合类型
  • 借助TypeScript的分布式条件类型特性,自动遍历联合类型的所有成员完成完整拼接

注意:该实现仅适用于字符串字面量组成的联合类型,若联合类型包含非字符串成员,需额外添加类型约束处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:05:25