10 вопросов по TypeScript и ответы на них

Короткий ответ: хороший ответ на вопрос по TypeScript должен быть не академическим, а практическим. Нужно показать, какую проблему решает тип, где он помогает в коде и какую ошибку предотвращает. Ниже 10 вопросов, которые часто всплывают у новичков, на собеседованиях и при ревью

Что такое TypeScript

TypeScript — это JavaScript с системой типов. Он проверяет код до запуска и компилируется в обычный JavaScript

Простой ответ:

function double(value: number): number {
  return value * 2;
}

TypeScript поймает вызов double("2") до runtime

Чем type отличается от interface

Оба описывают форму объекта:

type UserType = { id: number };
interface UserInterface { id: number }

interface удобно расширять декларативно, type удобен для union, intersection и utility types. Для обычного объекта подойдут оба

Что такое union

Union разрешает несколько вариантов:

type Status = "new" | "paid" | "cancelled";

Теперь нельзя случайно записать status: "done"

Чем any отличается от unknown

any отключает проверку. unknown требует сначала проверить значение

function print(value: unknown) {
  if (typeof value === "string") {
    console.log(value.toUpperCase());
  }
}

Для внешних данных лучше начинать с unknown, а не с any

Что такое generics

Generics позволяют сохранить связь между входом и выходом:

function identity<T>(value: T): T {
  return value;
}

Если передали строку, вернется строка. Если число — число

Что такое never

never означает значение, которого не должно быть. Часто используется для exhaustive check:

function assertNever(value: never): never {
  throw new Error(`Unexpected value: ${value}`);
}

Если в union добавили новый вариант и забыли обработать, TypeScript может подсказать проблему

Что такое tsconfig

tsconfig.json задает правила проекта: strict mode, target, module, include, outDir

Практический ответ: без tsconfig можно компилировать один файл, но проектом управлять неудобно

Что делает strict

strict: true включает строгие проверки. Он помогает ловить undefined, неправильные параметры и слабые места типизации

Для нового проекта лучше включать strict сразу. Для старого — вводить постепенно

Как типизировать массив объектов

Опишите тип элемента:

type Product = {
  id: number;
  title: string;
};

const products: Product[] = [];

Не используйте object[], если нужно обращаться к полям

Как TypeScript связан с runtime

TypeScript исчезает после компиляции. В runtime остается JavaScript. Поэтому типы не заменяют проверку данных с сервера

Если API прислал мусор, TypeScript сам это не остановит. Нужна runtime-валидация

Как тренироваться

Возьмите небольшой JavaScript-файл и добавьте типы: объект, массив объектов, функцию, API-ответ. Запустите npx tsc --noEmit и посмотрите, какие ошибки TypeScript подсвечивает

Частые ошибки в ответах

Плохой ответ — “TypeScript нужен, чтобы писать типы”. Хороший ответ — “TypeScript помогает заранее проверить контракты между функциями, компонентами и данными”

Еще одна ошибка — говорить, что TypeScript делает код безопасным полностью. Нет, он помогает на этапе компиляции, но внешние данные нужно проверять отдельно

Что почитать дальше по TypeScript

Если нужен общий маршрут по теме, откройте рубрику TypeScript. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x