Выбор ответа Junior Дженерики обновлено

Что даёт дженерик вместо any

Вопрос

Какой тип у w.v?

function wrap<T>(v: T) {
  return { v };
}
const w = wrap(5);

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: number. Параметр T выводится из аргумента.

Варианты ответа

  1. any
  2. numberправильный ответ
  3. 5
  4. unknown

Разбор

Параметр T выводится из аргумента. Литерал 5 передан в неограниченный параметр типа, поэтому вывод расширяет его до number, и результат { v: number }. Связь входа и выхода сохранилась, в этом смысл дженерика.

any получился бы с параметром v: any. 5 вывелся бы с модификатором const T или ограничением T extends number. unknown бывает, когда вывести T не из чего.

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

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

Термины по теме