TS TypeScript  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Базовые типы и вывод типов

Вопросы требуют читать код, сопоставлять статические гарантии с поведением JavaScript и выбирать решение, которое не рассыплется при развитии проекта.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 20
Какой статический тип имеет переменная boxed?
TypeScript
const boxed = new String("чай");
Вопрос 2 из 20
Почему последняя строка не проходит проверку типов?
TypeScript
const bytes = 4n;
const extra = 2;
const total = bytes + extra;
Вопрос 3 из 20
Что можно утверждать о сравнении tokenA === tokenB?
TypeScript
const tokenA = Symbol("session");
const tokenB = Symbol("session");
Вопрос 4 из 20
Функция получает результат JSON.parse из внешнего файла. Какой исходный тип лучше заставит код проверить данные перед использованием?
Вопрос 5 из 20
Какой тип возвращаемого значения точнее всего описывает функцию, которая при любом вызове выбрасывает исключение?
Вопрос 6 из 20
Какой тип TypeScript выводит для переменной mode?
TypeScript
let mode = "compact";
mode = "wide";
Вопрос 7 из 20
Как изменится тип поля method после as const?
TypeScript
const request = {
  method: "GET",
  retry: 2
} as const;
Вопрос 8 из 20
Какой тип элемента выводится у массива values?
TypeScript
const values = [1, "2", 3];
const item = values[0];
Вопрос 9 из 20
Обработчик передаётся прямо в Array.map. Почему параметр item часто не требует явной аннотации?
Вопрос 10 из 20
Нужно проверить объект на соответствие Record<string, string>, но сохранить точные типы его известных ключей. Что выбрать?
Вопрос 11 из 20
Какую ошибку помогает обнаружить явный тип результата?
TypeScript
function loadName(): string {
  if (Math.random() > 0.5) return "Ada";
}
Вопрос 12 из 20
Какая аннотация нужна, чтобы пустой массив принимал только идентификаторы-строки?
TypeScript
const ids = [];
ids.push("u-1");
ids.push(42);
Вопрос 13 из 20
Зачем здесь полезен явный тип переменной state?
TypeScript
type State = "idle" | "loading" | "ready";
let state: State = "idle";
state = "loading";
Вопрос 14 из 20
Где явная аннотация обычно приносит больше пользы, чем повторяет очевидный вывод?
Вопрос 15 из 20
Разработчик аннотировал каждую локальную переменную. Какой риск у такого стиля?
Вопрос 16 из 20
Почему присваивание вызывает ошибку?
TypeScript
let status: "open" | "closed" = "open";
const next: string = "closed";
status = next;
Вопрос 17 из 20
Какой вызов будет отклонён из-за проверки лишнего свойства у объектного литерала?
TypeScript
type User = { id: string };
function save(user: User) {}

const prepared = { id: "u1", role: "admin" };
save(prepared);
save({ id: "u2", role: "admin" });
Вопрос 18 из 20
Почему последняя строка небезопасна и не компилируется?
TypeScript
const source: readonly string[] = ["a", "b"];
let target: string[] = [];
target = source;
Вопрос 19 из 20
В объект из внешнего API временно добавилось новое поле. Почему присваивание через заранее объявленную переменную может пройти, хотя литерал напрямую не прошёл бы?
Вопрос 20 из 20
Как лучше исправить присваивание широкой строки в литеральный union, если строка приходит из формы?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу