Напиши тип Senior Дженерики обновлено
const-параметр типа (TS 5.0)
Вопрос
Какой тип получится? Впишите тип.
declare function tuple<const T extends readonly unknown[]>(x: T): T;
const t = tuple(['a', 1]); // t: /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: readonly ['a', 1]. Модификатор const у параметра типа (TS 5.0+) заставляет выводить тип аргумента так, будто написали as const: литералы не расширяются, массив становится readonly-кортежем.
Правильный тип
readonly ['a', 1]
Разбор
Модификатор const у параметра типа (TS 5.0+) заставляет выводить тип аргумента так, будто написали as const: литералы не расширяются, массив становится readonly-кортежем. Без const здесь вышло бы (string | number)[]. Ограничение readonly unknown[] влияет на результат: с изменяемым unknown[] вывод был бы изменяемым кортежем ['a', 1], потому что readonly-кортеж под такое ограничение не подходит.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.