Какие общие типы в TypeScript использовал
Разбор вопроса «Какие общие типы в TypeScript использовал» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Какие общие типы в TypeScript использовал
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер хочет убедиться, что кандидат понимает базовые и продвинутые типы TypeScript, может объяснить их применение в реальных проектах. Важно показать, как типы помогают в разработке: от catching ошибок на этапе компиляции до улучшения читаемости кода.
Ключевые тезисы
- Примитивные типы: string, number, boolean, null, undefined, symbol, bigint — базовые типы для работы с простыми значениями.
- Массивы и кортежи: Array<T> или T[] для массивов, [T1, T2] для кортежей с фиксированной длиной и типами элементов.
- Объекты и интерфейсы: { key: T } или interface для описания структуры объектов, включая опциональные свойства и readonly.
- Union и Intersection типы: T1 | T2 для объединения типов, T1 & T2 для их пересечения.
- Generics: Позволяют создавать переиспользуемые компоненты с параметризованными типами, например, Array<T> или Promise<T>.
- Литеральные типы и type aliases: Конкретные значения как тип (например, 'success' | 'error') и type для создания псевдонимов сложных типов.
- Функциональные типы: Описание сигнатур функций, включая параметры и возвращаемый тип.
Подробный ответ
TypeScript предоставляет множество встроенных типов, которые помогают разработчикам описывать структуру данных и поведение кода. Основные категории типов включают примитивы (string, number, boolean и др.), массивы и кортежи, объекты и интерфейсы, union и intersection типы, generics, литеральные типы и type aliases, а также функциональные типы. Примитивные типы используются для работы с простыми значениями, такими как строки, числа и булевы значения. Массивы и кортежи позволяют работать с коллекциями данных, причем кортежи фиксируют длину и типы элементов. Интерфейсы и объектные типы помогают описывать сложные структуры данных, включая опциональные и readonly свойства. Union и intersection типы позволяют комбинировать типы для создания более гибких структур. Generics обеспечивают переиспользуемость кода, позволяя параметризовать типы. Литеральные типы и type aliases упрощают работу с конкретными значениями и сложными типами, а функциональные типы описывают сигнатуры функций.
Практические примеры
Пример 1
Пример использования generics: функция, которая принимает массив любого типа и возвращает его первый элемент. Код: `function getFirstElement<T>(arr: T[]): T {
return arr[0]; }`Пример 2
Пример union типов: переменная, которая может быть либо строкой, либо числом. Код: `let value: string | number;`Пример 3
Пример интерфейса с опциональными свойствами: описание пользователя с необязательным полем email. Код: `interface User { name: string; age: number; email?: string; }`Частые ошибки
- Использование типа any вместо более конкретных типов, что снижает преимущества TypeScript.
- Неверное описание типов для кортежей, приводящее к ошибкам при доступе к элементам.
Связанные темы
- Типизация в React с TypeScript
- Работа с типами для API-запросов
- Продвинутые техники типизации: conditional types, mapped types
Follow-up вопросы
Можете привести пример использования generics в вашем проекте?
Уровень: intermediate
Использовал generics для создания универсального компонента-списка, который принимает массив элементов любого типа и рендерит их с помощью переданной функции.
Как вы используете union и intersection типы?
Уровень: intermediate
Union типы применял для обработки различных вариантов состояния (например, 'loading' | 'success' | 'error'), а intersection — для комбинирования типов, например, добавления общих свойств к пользовательским объектам.
Что такое type aliases и зачем они нужны?
Уровень: basic
Type aliases позволяют создавать переиспользуемые псевдонимы для сложных типов, упрощая их использование и поддержку в коде. Например, можно создать тип для объекта пользователя с множеством полей.
Как вы описываете типы для функций в TypeScript?
Уровень: basic
Использую функциональные типы для описания сигнатур функций, например, (arg1: number, arg2: string) => void, чтобы явно указать типы параметров и возвращаемого значения.
Как вы работаете с опциональными свойствами в интерфейсах?
Уровень: basic
Опциональные свойства помечаю знаком '?', что позволяет объектам соответствовать интерфейсу даже без этих свойств. Например, interface User { name: string; age?: number; }.
Какие знаешь проблемы Enum
Разбор вопроса «Какие знаешь проблемы Enum» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Какие преимущества PropTypes перед TypeScript
Разбор вопроса «Какие преимущества PropTypes перед TypeScript» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.