Карточка Senior Задачи на типы обновлено

Числа в типах

Вопрос

Как в системе типов TypeScript выполнить арифметику, например N + 1?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Числа представляют длиной кортежа: строят кортеж из N элементов рекурсией, добавляют элемент и читают ['length']. Пример: type Inc<N extends number, T extends unknown[] = [] = T['length'] extends N ? [...T, 0]['length'] : Inc<N, [...T, 0].

Ответ

Числа представляют длиной кортежа: строят кортеж из N элементов рекурсией, добавляют элемент и читают ['length']. Пример: type Inc<N extends number, T extends unknown[] = []> = T['length'] extends N ? [...T, 0]['length'] : Inc<N, [...T, 0]>. Глубина ограничена лимитом рекурсии.

Разбор

Числа представляют длиной кортежа: строят кортеж из N элементов рекурсией, добавляют элемент и читают ['length']. Пример: type Inc<N extends number, T extends unknown[] = []> = T['length'] extends N ? [...T, 0]['length'] : Inc<N, [...T, 0]>. Глубина ограничена лимитом рекурсии.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.