extends [infer A, infer B]
? [A, B, C] | [B, C, A] | [C, A, B] | [A, C, B] | [B, A, C] | [C, B, A]
: [C, T] | [T, C];
let a: Tuple<1, 2>;
let b: Tuple<1, Tuple<2, 3>>;
let c: Tuple<1, Tuple<2, Tuple<3, 4>>>; // уже не прокатит
Не получается рекурсивно ссылаться на объявляемый тип:
type Tuple<T, U> = T extends Tuple<infer A, infer B> // ошибка
Если кто-нибудь сможет это сделать - будет интересно)
Бессмысленно) TS для таких задач не подходит пока что. Даже если бы работало - как с таким кодом потом работать? Проще через JS сделать валидацию.
Обсуждают сегодня