Выбор ответа Junior Базовые типы спрашивают часто обновлено

as не проверяет данные

Вопрос

Что выведет код?

type User = { id: number };
const u = JSON.parse('{"id":"7"}') as User;
console.log(typeof u.id);

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

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

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

Коротко

Правильный ответ: string. Типы стираются при компиляции, а as только говорит компилятору «поверь мне».

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

  1. number
  2. stringправильный ответ
  3. Ошибка компиляции
  4. Ошибка в рантайме: TypeError

Разбор

Типы стираются при компиляции, а as только говорит компилятору «поверь мне». Никакой проверки в рантайме нет, поэтому в u.id лежит строка "7" из JSON, и typeof даёт string.

Компилятор не ругается: JSON.parse возвращает any, а его можно привести к чему угодно. Рантайм тоже не падает: чтение поля проходит. Для данных извне нужна валидация (zod, valibot или ручная проверка).

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

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