Sobes.tech
Middle

Qual è la differenza tra interface e type in TypeScript? Cosa succede se si dichiarano due interfacce con lo stesso nome?

sobes.tech AI

Risposta dell'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, то компилятор выдал бы ошибку о повторном объявлении.