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

如何定义允许字符串联合成员不重复任意组合的模板字面量类型?

解决方案

要实现允许AllowedWords中元素任意顺序组合且每个元素最多出现一次的模板字面量类型,可以通过递归的类型操作来完成:

type AllowedWords = "one" | "two" | "three";

// 生成联合类型的所有非空排列组合
type Permute<T extends string> = T extends infer U
  ? U extends string
    ? `${U}${Permute<Exclude<T, U>>}` | U
    : never
  : never;

// 最终的合法组合类型
type ValidCombinations = Permute<AllowedWords>;

类型说明

  • Permute<T> 是核心递归类型:
    1. 通过条件类型将联合类型T拆分出单个元素U;
    2. 对每个U生成两种结果:直接返回U(对应单个元素的情况),或者将U与去掉U后剩余元素的排列拼接;
    3. 递归过程会遍历所有可能的元素选取顺序,直到剩余元素为空,最终生成所有非空的不重复排列组合。

这个类型会精确生成你列出的全部15种合法匹配项,包括单个元素、两两组合、三个元素的全排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:15:11