Last of Array
Завдання
Створити тип Last<T>
який приймає масив T
і повертає тип останнього
елемента. Наприклад:
type arr1 = ["a", "b", "c"];
type arr2 = [3, 2, 1];
type tail1 = Last<arr1>; // expected to be 'c'
type tail2 = Last<arr2>; // expected to be 1
Розв’язок
Щоб отримати останній елемент масиву, потрібно перебрати всі елементи до останнього.
Для цього використаємо варіативні типи.
Знаючи варіативні типи, рішення очевидне. Беремо елементи від першого, доки не дійдемо до останнього. Комбінуючи це з виведенням типів в умовних типах, рішення стає доволі простим:
type Last<T extends any[]> = T extends [...infer X, infer L] ? L : never;
Коментарі