Давайте поговорим о разнице между типом и интерфейсом в Typescript.

В последних версиях Typescript различия между ними минимальны, и теперь Тип можно использовать поверх интерфейса практически во всех случаях.

И Интерфейс, и Тип могут использоваться для описания свойств объекта или сигнатуры функции. Но синтаксис отличается

Как видно из примера выше, для объявления объекта между ними нет никакой разницы, кроме изменения синтаксиса. Синтаксис интерфейса похож на объявление класса, а Тип похож на объявление объекта.

Тип и интерфейс могут использоваться для подписи функции, см. пример ниже.

Начиная с Typescript 2.2, теперь можно иметь интерфейс, который расширяет объектно-подобный тип

Теперь возможно, что Interface может расширять Type.

Теперь давайте посмотрим, какие функции есть у Type, чего нет у Interface.

  1. Псевдоним примитива, используя Тип, мы можем создать псевдоним для некоторого примитивного значения, например, псевдоним для уникального идентификатора, и использовать его в других интерфейсах или типы для более осмысленного и понятного кода.

если псевдоним не для примитивного значения, а для массива, то мы можем использовать либо тип, либо интерфейс

2. Кортежи позволяют нам использовать этот новый тип данных, который включает два набора значений разных типов данных.

Кортеж: представляет собой массив неизменного размера и действует как константа в мире массивов.

3. Пересечение позволяет нам объединять несколько типов в один тип. Чтобы создать тип пересечения, мы должны использовать ключевое слово &:

4. Объединение позволяет нам создать новый тип, который может иметь значение одного или нескольких других типов. Чтобы создать тип объединения, мы должны использовать ключевое слово |.

5. Автоматическое объединение работает только с интерфейсами. если тип объявляется несколько раз, компилятор машинописного текста выдает ошибку.

Typescript объединяет два объявления для Interface

Заключение

В этой статье мы рассмотрели сходство между Type и Interface и перечислили Typeфункции, которые отличаются от Interface.

Интерфейс отлично подходит для определения общедоступного API или стороннего определения типа.

Спасибо за прочтение — надеюсь, эта статья оказалась вам полезной. Удачного кодирования!