Typescript 限制泛型联合类型以允许类型数大于N

Typescript 限制泛型联合类型以允许类型数大于N,typescript,types,union-types,Typescript,Types,Union Types,我还没有找到任何关于如何限制泛型类型可以接受的联合类型数量的信息 唯一部分相关的主题可以在这里找到,但仍然不是我的目标 鉴于我有以下代码: 枚举货币{ EUR=“EUR”, USD=“USD”, PLN=“PLN”, RUB=“RUB” } 类型令牌={ 类型:T; 值:字符串; }; 常量令牌1:令牌={ 类型:Currency.EUR, 值:“1” } 常量标记2:标记={ 类型:Currency.USD, 值:“1” } 常量货币=[token1,token2]; const curren

我还没有找到任何关于如何限制泛型类型可以接受的联合类型数量的信息

唯一部分相关的主题可以在这里找到,但仍然不是我的目标

鉴于我有以下代码:

枚举货币{
EUR=“EUR”,
USD=“USD”,
PLN=“PLN”,
RUB=“RUB”
}
类型令牌={
类型:T;
值:字符串;
};
常量令牌1:令牌={
类型:Currency.EUR,
值:“1”
}
常量标记2:标记={
类型:Currency.USD,
值:“1”
}
常量货币=[token1,token2];
const currencyUnunion=token1.type;//是欧元吗
常量currencyUnion=货币[0]。类型;///是货币.EUR |货币.USD
//当T不是联合类型时,应该从不返回,当T是联合类型时,应该在其他类型中转发T
//不止一个//
//不止一个//Currency.EUR | Currency.ETH
类型多于一个=T
const foo=(curr:morethane)=>{//}
//应该有用
foo(货币联盟);
//失败
foo(currency);
()

不止一个
通用实用程序类型在不是联合类型时应永不返回。 鉴于上述要求,第二个
foo
调用应该抛出编译时错误