Выбор ответа Junior Базовые типы спрашивают часто обновлено
as не проверяет данные
Вопрос
Что выведет код?
type User = { id: number };
const u = JSON.parse('{"id":"7"}') as User;
console.log(typeof u.id);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: string. Типы стираются при компиляции, а as только говорит компилятору «поверь мне».
Варианты ответа
numberstringправильный ответ- Ошибка компиляции
- Ошибка в рантайме: TypeError
Разбор
Типы стираются при компиляции, а as только говорит компилятору «поверь мне». Никакой проверки в рантайме нет, поэтому в u.id лежит строка "7" из JSON, и typeof даёт string.
Компилятор не ругается: JSON.parse возвращает any, а его можно привести к чему угодно. Рантайм тоже не падает: чтение поля проходит. Для данных извне нужна валидация (zod, valibot или ручная проверка).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.