Sobes.tech
Back to questions
Middle+
2

Чем ключевое слово type отличается от interface в TypeScript? Расскажи про наследование в типах и интерфейсах.

Companies where asked
VK Tech

Answer from AI

sobes.tech AI

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

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

Наследование:

  • В interface наследование происходит через extends:
interface A { a: string }
interface B extends A { b: number }
  • В type наследование реализуется через пересечение типов:
type A = { a: string }
type B = A & { b: number }

Основные отличия:

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

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