Sobes.tech
Back to questions
Middle
1

Есть ли разница между type и interface в TypeScript?

Companies where asked
МТС БанкМТС Банк

Answer from AI

sobes.tech AI

В TypeScript type и interface имеют сходства, но есть ключевые отличия:

  • Расширяемость:

    • interface можно расширять (extends) и дополнять (declaration merging).
    • type нельзя дополнять после объявления, но можно создавать новые типы на основе существующих через объединения и пересечения.
  • Возможности:

    • type может описывать не только объекты, но и примитивы, объединения, кортежи и т.д.
    • interface предназначен только для описания структур объектов и классов.
  • Использование:

    • interface часто предпочтительнее для описания публичных API и объектов, так как поддерживает декларативное расширение.
    • type удобен для сложных типов, объединений и алиасов.

Пример:

interface User {
  name: string;
}

interface User {
  age: number; // интерфейсы объединятся
}

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

// type не поддерживает объединение

type ID = string | number;