Middle
Mi a különbség az interface és a type között a TypeScript-ben? Mi történik, ha két interface-t deklarálunk ugyanazzal a névvel?
sobes.tech MI
Válasz az MI-től
В 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, то компилятор выдал бы ошибку о повторном объявлении.