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

TypeScript中如何创建无重复的动态排列类型?

如何在TypeScript中排除动态字符串类型的自身重复组合

要排除USDxUSD这类自身重复的组合,你可以利用TypeScript的分布条件类型或映射类型,结合Exclude工具类型来实现:

解法一:分布条件类型实现

type Currency = 'CAD' | 'USD' | 'EUR';

type CurrencyQuote<T extends Currency = Currency> = T extends infer U 
  ? `${U}x${Exclude<Currency, U>}`
  : never;

解法二:映射类型实现(更直观)

type Currency = 'CAD' | 'USD' | 'EUR';

type CurrencyQuote = {
  [K in Currency]: `${K}x${Exclude<Currency, K>}`
}[Currency];

工作原理

两种写法的核心逻辑一致:

  1. 遍历Currency联合类型中的每一个成员
  2. 用Exclude<Currency, 当前成员>过滤掉自身,得到剩余的货币类型联合
  3. 通过模板字面量将当前成员与剩余成员组合,最终合并成所有非自身组合的联合类型

最终生成的CurrencyQuote类型为:"CADxUSD" | "CADxEUR" | "USDxCAD" | "USDxEUR" | "EURxCAD" | "EURxUSD",完全排除了自身重复的组合项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:16:30