Назад к вопросам
Middle+
1
Чем ключевое слово type отличается от interface в TypeScript? Расскажи про наследование в типах и интерфейсах.
Компании, где спрашивали
VK Tech
Ответ от нейросети
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.