В чём разница между interface и type в TypeScript? Что произойдёт, если объявить два интерфейса с одинаковым названием?
Ответ от нейросети
sobes.tech AI
В TypeScript interface и type часто используются для описания типов, но между ними есть отличия:
-
interface предназначен для описания структуры объектов и поддерживает декларативное объединение (declaration merging). Это значит, что если объявить два интерфейса с одинаковым именем, они автоматически объединятся в один интерфейс с объединёнными свойствами.
-
type — это алиас для типа, который может описывать не только объекты, но и объединения, пересечения, примитивы и т.д. Объявить два
typeс одинаковым именем нельзя — это вызовет ошибку.
Пример объединения интерфейсов:
interface User {
name: string;
}
interface User {
age: number;
}
const user: User = {
name: 'Alice',
age: 30
};
Здесь два интерфейса User сливаются в один с двумя свойствами name и age. Если бы это были type, то компилятор выдал бы ошибку о повторном объявлении.