TypeScriptУрок 8 из 16

Дженерики

Дженерик — функция или тип с параметром типа, обычно его называют T. Один и тот же код работает с числами, строками и объектами и не теряет проверки типов.

Главное

  • function first<T>(items: T[]): T | undefined — T подставится при вызове.
  • Обычно T выводится сам: first([10, 20]) вернёт number | undefined.
  • Интерфейсы тоже бывают обобщёнными: Box<boolean>.
  • T extends { length: number } — ограничение: подойдут только значения с length.

Пример

function first<T>(items: T[]): T | undefined {  return items[0];} const n = first([10, 20]); // number | undefinedconst s = first(["a", "b"]); // string | undefined interface Box<T> {  value: T;}const flag: Box<boolean> = { value: true }; function longest<T extends { length: number }>(a: T, b: T): T {  return a.length >= b.length ? a : b;}// longest(10, 20); // error: number has no length console.log(`${n} ${s} ${flag.value}`);console.log(longest("tea", "coffee"));console.log(longest([1, 2, 3], [4]).join("-"));

first возвращает ровно тот тип, что лежит в массиве, а не any. longest принимает строки и массивы, но не числа: у числа нет length.

Задание

Как пользоваться редактором⌘ Enter или Ctrl Enter — запустить код, ⇧ ⌘ Enter — проверить задание.Tab и Shift Tab сдвигают строку или выделение; Esc, затем Tab — выйти из редактора.Проверка сравнивает то, что напечатала программа, с заданием; пробелы в конце строк не важны.После двух неудачных проверок можно открыть решение. Ваш код сохраняется в этом браузере.

Сделайте функцию chunk обобщённой, разрежьте массив на страницы через slice и раскомментируйте второй вызов. Вывод: «a,b | c,d | e» и «1,2,3 | 4,5,6 | 7».

Вывод

Здесь появится то, что напечатает программа.