【发布时间】:2021-10-13 14:19:07
【问题描述】:
我在 Typescript 中有这样的功能:
function combine<A, B>(p1: Parser<A>, p2: Parser<B>): Parser<A | B> { … }
是否可以为可变数量的类型变量(A,B,C,...)键入它并将结果类型正确设置为Parser<A | B | C | …>?我知道我可以通过为不同的 arities 手动编写类型签名来做到这一点:
function combine<A>(p1: Parser<A>): Parser<A>;
function combine<A, B>(p1: Parser<A>, p2: Parser<B>): Parser<A | B>;
// …and so on…
function combine(...parsers: Parser<any>[]): Parser<any> { … }
这是唯一的选择吗?
附言。我在看this similar question,但是类型有点超出我的想象,我不知道它是否是相同的情况(“无限联合类型”在这里看起来像是一个额外的要求)。
【问题讨论】:
标签: typescript generics