В чем заключается разница между интерфейсом и типом?
— 2 минуты
Для меня большое удивление, что я до сих пор не смог найти нормального материала, где был бы описан этот вопрос. В этом после я планирую исправить эту несправедливость.
Тип — обозначается ключевым словом type — представляет собой либо описание структуры (объекта, функции…), либо набор других типов или структур:
typescript1// набор типов 2type Identifier = string | boolean; 3 4// описание структуры 5type Person = { 6 name: string; 7 age: number; 8} 9 10// набор типов или структур 11type Foo = Person | string; 12
Интерфейс — обозначается ключевым словом interface — может описывать только структуры:
typescript1interface Props { 2 title: string; 3 visible?: boolean; 4} 5
Особенности типов
- Только типами можно создать типы-объединения (они же union type):
typescript1type Identifier = string | number 2type Animal = Dog | Cat 3
- Только типами можно создавать кортежи, фиксируя тип элемента массива по индексу и длину массива:
typescript1type Cortage = [string, number, boolean] 2
- Только с помощью типов можно создавать псевдонимы (они же alias):
typescript1type Name = string 2type Author = Name 3
- Типами проще и красивее создавать описание функций:
typescript1type Foo = (a: string) => number 2 3interface Foo { 4 (a: string): number 5} 6
Особенности интерфейсов
- Только интерфейсы имеют перегрузку типов:
typescript1interface Person { 2 name: string 3} 4 5interface Person { 6 age: number 7} 8 9const kate: Person = { 10 name: "Екатерина", 11 age: 24 12} 13
- Только интерфейсы могут быть имплементированы:
typescript1interface Person {} 2 3class Fireman implements Person {} 4
В основном, между интерфейсом и типом больше схожестей, чем отличий. Выше я перечислил основные различия между этими двумя сущностями, которого хватит для ответа на любом собеседовании
Статья была полезной?
Читайте также:
— 3 минуты
Составные компоненты
Есть такой паттерн для реакта, который называется Compound Components. Это...
— 2 минуты
Что такое структурная типизация
Структурная типизация — это подход в языках программирования, который позво...
— 3 минуты
Дженерики
Сколько я не бился в попытках объяснить что такое дженерик, кажется, что эт...