tgoop.com/prog_way_blog/293
Create:
Last Update:
Last Update:
В чем заключается разница между интерфейсом и типом?
Для меня большое удивление, что я до сих пор не смог найти нормального материала, где был бы описан этот вопрос. В этом после я планирую исправить эту несправедливость.
Тип — обозначается ключевым словом type
— представляет собой либо описание структуры (объекта, функции…), либо набор других типов или структур:
// набор типов
type Identifier = string | boolean;
// описание структуры
type Person = {
name: string;
age: number;
}
// набор типов или структур
type Foo = Person | string;
Интерфейс — обозначается ключевым словом
inderface
— может описывать только структуры:interface Props {
title: string;
visible?: boolean;
}
Особенности типов:
1. Только типами можно создать типы-объединения (они же union type):
type Identifier = string | number
type Animal = Dog | Cat
2. Только типами можно создавать кортежи, фиксируя тип элемента массива по индексу и длину массива:
type Cortage = [string, number, boolean]
3. Только с помощью типов можно создавать псевдонимы (они же alias):
type Name = string
type Author = Name
4. Типами проще и красивее создавать описание функций:
type Foo = (a: string) => number
interface Foo {
(a: string): number
}
Особенности интерфейсов:
1. Только интерфейсы имеют перегрузку типов:
interface Person {
name: string
}
interface Person {
age: number
}
const kate: Person = {
name: "Екатерина",
age: 24
}
2. Только интерфейсы могут быть имплементированы:
interface Person {}
class Fireman implements Person {}
В основном, между интерфейсом и типом больше схожестей, чем отличий. Выше я перечислил основные различия между этими двумя сущностями, которого хватит для ответа на любом собеседовании.
Спасибо за прочтение, это важно для меня ❤️
#web #theory #typescript
BY progway — программирование, IT
Share with your friend now:
tgoop.com/prog_way_blog/293