Pop
Завдання
Реалізувати тип Pop<T>
, який приймає масив T
та повертає масив без
останнього елемента. Наприклад:
type arr1 = ["a", "b", "c", "d"];
type arr2 = [3, 2, 1];
type re1 = Pop<arr1>; // expected to be ['a', 'b', 'c']
type re2 = Pop<arr2>; // expected to be [3, 2]
Розв’язок
Розділимо масив на дві частини: від початку до останнього елемента й останній елемент. Потім позбуваємось від останнього елемента і повертаємо першу частину.
Для цього скористаємось варіативними типами. Комбінуючи їх з виведенням типів в умовних типах, виводимо потрібні частини массиву:
type Pop<T extends any[]> = T extends [...infer H, infer T] ? H : never;
У випадку, коли T
можна присвоїти до масиву, який можна поділити на дві
частини, повертаємо його першу частину, інакше повертаємо never
.
Коментарі