Встречается на собеседованиях • сегодня

Дублируют ли друг друга type и interface в TypeScript

type и interface в TypeScript во многом похожи, но есть ключевые различия:

  1. Расширение
    interface можно расширять через extends, а type — через & (интерсекшн).
    ts
    interface A { x: number }
    interface B extends A { y: string }
    
    type C = { x: number }
    type D = C & { y: string }
  1. Объединение
    interface поддерживает автоматическое мержинг (объявление с тем же именем дополняет тип).

    ts
    interface Foo { x: number }
    interface Foo { y: string } // Foo = { x: number, y: string }

    type так не работает — дублирование вызовет ошибку.

  2. Примитивы и сложные типы
    type может описывать примитивы, юнионы, кортежи и т.д., а interface — только объекты.

    ts
    type ID = string | number
    type Coord = [number, number]

Когда что использовать?

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

В остальном они взаимозаменяемы.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы