typescript - 打字稿:如何将项目添加到元组?
问题描述
为什么这会产生错误“剩余元素类型必须是数组类型。”?
type QWE<T extends [number, string]> = [boolean, ...T]
^^^^ the error is here
解决方案
如果有人觉得它有用,这是提香类型的一个版本,改进涵盖了更多情况:
type R = TupleUnshift<boolean, [number, string]> // [boolean, number, string]
type TupleUnshift<A, B extends [...any[]]> = ((a: A, ...r: ForcedTuple<B>) => void) extends (...a: infer R) => any ? R : never
type ForcedTuple<T> =
T extends [
infer A,
infer B,
infer C,
infer D,
infer E,
infer F,
infer G,
infer H,
infer I,
infer J,
infer K,
infer L,
infer M,
infer N,
infer O,
infer P,
infer Q,
infer R,
infer S,
infer T,
infer U,
infer V,
infer W,
infer X,
infer Y,
infer Z
]
?
[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
: T