Напиши тип Junior Базовые типы обновлено

as const на вложенном массиве

Вопрос

Какой тип получится? Впишите тип.

const cfg = { ports: [80, 443] } as const;
type Ports = typeof cfg.ports; // /* ? */

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

Напишите тип, как написали бы в коде.

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

Коротко

Правильный тип: readonly [80, 443]. as const действует глубоко: объект становится readonly, вложенный массив превращается в readonly-кортеж, числа остаются литералами.

Правильный тип

readonly [80, 443]

Разбор

as const действует глубоко: объект становится readonly, вложенный массив превращается в readonly-кортеж, числа остаются литералами. Без него было бы number[]. Отличие от Object.freeze: as const только про типы и действует на всю глубину, а freeze работает в рантайме и только на верхнем уровне.

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

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