Sobes.tech
Middle
31

Qual è la differenza tra interface e type in TypeScript? A cosa servono le interfacce se ci sono già i tipi e viceversa?

Le aziende dove è stato chiesto
Evrone

Risposta dell'AI

sobes.tech AI

В TypeScript и interface, и type используются для описания формата данных, но между ними есть важные отличия.

  • interface предназначен для описания структуры объектов и может быть расширен (extends) или реализован (implements) классами. Интерфейсы поддерживают декларативное слияние (declaration merging), то есть можно объявить интерфейс с одним именем несколько раз, и TypeScript объединит их.

  • type — это более общий инструмент, который позволяет создавать алиасы для любых типов: примитивов, объединений, пересечений, кортежей и т.д. Типы нельзя расширять или реализовывать, и они не поддерживают декларативное слияние.

Зачем нужны оба?

  • Интерфейсы удобны для описания контрактов объектов и классов, особенно когда важна расширяемость и декларативное слияние.
  • Типы дают больше гибкости для сложных выражений типов, например, объединений или пересечений.

Пример:

interface IUser {
  name: string;
}

interface IUser {
  age: number; // интерфейсы сливаются
}

const user: IUser = { name: "Alice", age: 30 };

// type так не сработает
// type User = { name: string };
// type User = { age: number }; // ошибка: Duplicate identifier 'User'

// type позволяет объединения

type ID = string | number;