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

Дженерик без аргументов вывода

Вопрос

Какой тип у s?

const s = new Set();

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

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

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

Коротко

Правильный ответ: Set<unknown. Вывести параметр типа не из чего: аргументов нет.

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

  1. Set<any>
  2. Set<never>
  3. Set<unknown>правильный ответ
  4. Ошибка: нужно указать параметр типа

Разбор

Вывести параметр типа не из чего: аргументов нет. В этом случае TypeScript подставляет ограничение параметра, а без ограничения это unknown. Получается Set<unknown>: добавить можно что угодно, но достать значение без сужения нельзя. Поэтому пишут new Set<string>().

any подставился бы, только если бы так было объявлено значение по умолчанию у параметра. never здесь неоткуда взяться. Ошибки нет: параметр типа можно не указывать.

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

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

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