← Усі задачіTypeScript · Junior
Дженерики: first і last
Функції first(items) і last(items) повертають перший і останній елемент масиву. Зараз вони приймають і повертають any, тож результат втрачає тип.
Зробіть їх дженериками: для number[] результат має бути number | undefined, а для масиву as const - об'єднання його літералів. Порожній масив дає undefined.
Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (6)
Тести типів перевіряє компілятор TypeScript у режимі strict. Expect<Equal<A, B>> проходить, коли типи збігаються точно, а // @ts-expect-error - коли наступний рядок не компілюється. Перший запуск завантажує компілятор, тож триває кілька секунд.
- типи
const n = first([1, 2, 3]); type _ = Expect<Equal<typeof n, number | undefined>>;
- типи
const s = last(['a', 'b'] as const); type _ = Expect<Equal<typeof s, 'a' | 'b' | undefined>>;
- типи
const e = first([] as string[]); type _ = Expect<Equal<typeof e, string | undefined>>;
expect(first([1, 2, 3])).toBe(1); expect(last([1, 2, 3])).toBe(3);
expect(first([])).toBe(undefined); expect(last([])).toBe(undefined);
expect(last(['only'])).toBe('only');