【发布时间】:2019-11-11 16:51:38
【问题描述】:
是否可以在 Typescript 中为函数编写类型感知声明,它接受元组并返回带有附加项的新函数,而不使用函数重载?
简而言之,我需要表达以下功能:
[T1, T2, ... Tn] + U => [T1, T2, ... Tn, U]
除了多重重载之外,还有一个明显的方法:
function append<A, B>(a: [A], b: B): [A, B];
function append<A, B, C>(a: [A, B], c: C): [A, B, C];
function append<A, B, C, D>(a: [A, B, C], d: D): [A, B, C, D];
function append(tuple: any[], b: any): any[] {
return tuple.concat([b]);
}
有没有办法写成这样的:
function append<T extends any[], U>(t: T, u: U): ??? => ???;
【问题讨论】:
-
这在有警告的情况下是可行的,如这个重复的问题中所示