> Где и как прописать аннотацию типа в TypeScript (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One
Стек: TypeScript
> Пример ответа
Короткий ответ
Аннотации типов в TypeScript прописываются через двоеточие после имени переменной, параметра функции или возвращаемого значения. Для объектов и функций используются интерфейсы, type-алиасы или inline-аннотации. Типы можно задавать в объявлениях переменных (const x: number), параметрах функций (fn(a: string)), возвращаемых значениях ((): boolean), а также через generics (Array<number>). Для сложных структур применяются interface и type.
Подробное объяснение
TypeScript предоставляет несколько способов аннотации типов в зависимости от контекста:
- Переменные:
let name: string = "John"- явное указание типа после имени. - Параметры функций:
function greet(name: string): void- тип после имени параметра. - Возвращаемые значения:
function add(a: number, b: number): number- тип после круглых скобок. - Свойства объектов:
{ name: string; age: number }- inline или через interface/type. - Generics:
function identity<T>(arg: T): T- угловые скобки для параметризации. - Union и Intersection:
string | number,A & B- комбинирование типов. - Optional и readonly:
name?: string,readonly id: number- модификаторы.
Для повторного использования типов применяются interface (расширяемый, декларативное слияние) и type (aliases, union, intersection, mapped types). Выбор между ними зависит от задачи: interface предпочтителен для объектов и классов, type - для сложных композиций.
На практике
В реальных проектах аннотации типов помогают:
- Документировать API модулей и компонентов.
- Обеспечивать type safety при работе с внешними данными (API, JSON).
- Упрощать рефакторинг через автоматическую проверку типов.
- Создавать самодокументируемый код.
Типичные сценарии:
- React компоненты: прописывать типы props через
interfaceилиtype. - Redux: типизировать state, actions, reducers.
- API-клиенты: создавать типы для запросов и ответов.
- Utility types: использовать
Partial,Pick,Omitдля трансформации.
Пример кода
TYPESCRIPT// Аннотация переменнойconst age: number = 30;// Функция с типизированными параметрами и возвратомfunction multiply(a: number, b: number): number {return a * b;}// Interface для объектаinterface User {readonly id: number;name: string;email?: string; // optional}// Type alias с uniontype Status = "active" | "inactive";// Generic функцияfunction getFirst<T>(arr: T[]): T | undefined {return arr[0];}// Использованиеconst user: User = { id: 1, name: "Alice" };const status: Status = "active";const first = getFirst([1, 2, 3]); // number
Как отвечать на собеседовании
Начни с базового синтаксиса (двоеточие после имени), затем перейди к контекстам (переменные, функции, объекты). Упомяни разницу между interface и type, приведи примеры из практики (React, API). Покажи понимание generics и utility types. Если спросят про advanced - расскажи про conditional types, mapped types, infer. Избегай излишней теории, фокусируйся на практическом применении.
Что проверяет интервьюер
- Понимание синтаксиса и мест применения аннотаций.
- Умение выбирать между interface и type.
- Знание generics и их использования.
- Способность типизировать реальные сценарии (объекты, функции, async).
- Понимание trade-off между явной типизацией и выведением типов.
Типичные ошибки
- Путать
interfaceиtype- не знать, что interface расширяется, а type - нет (в плане declaration merging). - Забывать аннотировать возвращаемое значение функции, особенно для сложных типов.
- Использовать
anyвместо правильного типа. - Не учитывать optional и readonly модификаторы.
- Переусложнять типы там, где достаточно простого выведения (type inference).
> Похожие задачи по frontend
Как TypeScript влияет на производительность в продакшн
Распространяется ли концепция SOLID на TypeScript
Какова роль юнит тестов при использовании TypeScript
Какие модификаторы классов есть в TypeScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью