> Можно ли создать два интерфейса или типа с одинаковым именем, но разным описанием в TypeScript (JavaScript)
Уровень: middle · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы
Компании: TrendTech
Стек: Node.js, JavaScript, TypeScript
> Пример ответа
Да, в TypeScript можно объявить два интерфейса с одинаковым именем - это называется декларативное слияние (declaration merging). TypeScript автоматически объединит их описания в один интерфейс.
Пример:
TYPESCRIPTinterface User {name: string;}interface User {age: number;}// Результирующий интерфейс: { name: string; age: number; }const user: User = { name: "Alice", age: 30 }; // OK
Однако для типов (type) такое невозможно - повторное объявление типа с тем же именем вызовет ошибку:
TYPESCRIPTtype User = { name: string };type User = { age: number }; // Ошибка: Duplicate identifier 'User'
Исключение: если типы определены в разных модулях (файлах), они не конфликтуют, так как каждый модуль имеет свою область видимости. Но в рамках одного модуля или глобальной области дублирование типа запрещено.
Таким образом, для интерфейсов слияние - это осознанная фича (часто используется для расширения сторонних типов, например, в express), а для типов - ошибка.
> Похожие задачи по JavaScript
Какой роутер используется в React: нативный или сторонний
Нужно ли добавлять Promise к выходному типу асинхронной функции в TypeScript
Какой опыт работы с NestJS
Работали ли вы с интерцепторами в NestJS
> Похожие задачи по frontend
Нужно ли мутировать массив товаров или создавать его копию для обновления состояния в React?
Что означает ошибка too many renders в React и как её исправить
Какой опыт работы с NestJS
Работали ли вы с интерцепторами в NestJS
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью