Sobes.tech
Назад к вопросам
Middle
2

В TypeScript можно объявлять типы с помощью ключевого слова interface и с помощью ключевого слова type. Можешь кратко сказать, в чём разница?

Компании, где спрашивали
СберInfra.cloud

Ответ от нейросети

sobes.tech AI

В TypeScript interface и type часто используются для описания типов объектов, но между ними есть отличия:

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

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

Пример:

interface User {
  name: string;
}

interface User {
  age: number;
}

// Теперь User имеет оба свойства: name и age

// С type так сделать нельзя:
type UserType = {
  name: string;
};

// type UserType = {
//   age: number;
// }; // Ошибка: Duplicate identifier 'UserType'

В целом, если нужно описать структуру объекта и планируется расширение, лучше использовать interface. Если нужен более сложный тип (например, объединение или кортеж), или алиас, то type.