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

Параметр типа по умолчанию

Вопрос

Что скажет компилятор?

type Resp<T = string> = { data: T; status: number };
const r: Resp = { data: 1, status: 200 };

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

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

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

Коротко

Правильный ответ: Ошибка: number нельзя присвоить в string. В аннотации типа параметры не выводятся из значения.

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

  1. Ошибка: number нельзя присвоить в stringправильный ответ
  2. Ошибка: у Resp обязателен параметр типа
  3. Всё компилируется, data имеет тип any
  4. Всё компилируется, T выведется как number

Разбор

В аннотации типа параметры не выводятся из значения. Если параметр не указан, берётся значение по умолчанию: Resp это Resp<string>, и поле data ожидает строку. Число даёт ошибку.

Вывод из значения работает только для вызовов функций. Параметр не обязателен, потому что у него есть значение по умолчанию. any тут ниоткуда не появляется.

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

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

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