Получить доступ

Зачем нужен TypeScript и чем any отличается от unknown?

JuniorTypeScript
Ещё спрашивают так:
  • Проверяет ли TypeScript типы во время выполнения?
Коротко

TypeScript добавляет к JavaScript статические типы, которые проверяются при компиляции и стираются в итоговом JS. Польза: ошибки до запуска, автодополнение, безопасный рефакторинг, типы как документация. any отключает проверку; unknown — «что угодно», но перед использованием тип нужно сузить проверкой.

  • Данные из сети типы не гарантируют — проверять схемой (zod, valibot)
  • strict: true — обязательно в новых проектах
  • never — значение, которого не бывает: исчерпывающая проверка switch

А ещё Вывод типов: явные аннотации нужны в основном на границах функций

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Структурная типизация. Совместимость определяется формой объекта, а не именем типа: объект с нужными полями подходит, даже если объявлен иначе.

any vs unknown: any позволяет всё — и молча распространяется дальше, превращая проверки в формальность. unknown безопасен: к значению нельзя обратиться, пока проверка (typeof, instanceof, in, пользовательский type guard) не сузит тип.

Сужение и размеченные объединения — главный приём: объединение вариантов с полем-дискриминатором (kind), и в каждой ветке switch TypeScript знает точный тип.

Границы системы. Ответ API типизируют, но фактически сервер может вернуть что угодно — валидация схемой во время выполнения.

Пример

function parse(input: unknown): number {
  if (typeof input === "number") return input;      // сужение
  if (typeof input === "string") return Number(input);
  throw new Error("bad input");
}

type Shape = { kind: "circle"; r: number } | { kind: "square"; a: number };
function area(s: Shape): number {
  switch (s.kind) {
    case "circle": return Math.PI * s.r ** 2;
    case "square": return s.a ** 2;
    default: const _exhaustive: never = s; return _exhaustive;
  }
}

Что хотят услышать

  • Статическая проверка и стирание типов.
  • any против unknown, сужение.
  • Проверка внешних данных.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем