Задать вопрос

Когда использовать type а когда интерфейс (не включая тех. детали и синтаксис)?

Чем отличается интерфейс (interface) от type? В отличиях синтаксиса и других тех. деталях я разобрался, а вот когда что использовать не сильно понял. Из догадок только то что, когда мы хотим описать какой то тип, и этот тип является объектом то лучше будет использовать интерфейс.
  • Вопрос задан
  • 513 просмотров
Подписаться 6 Простой Комментировать
Решения вопроса 3
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Если вам нужно использовать обьект то интерфейс, если создавать то класс. Это если совсем утрировать.
Вот хорошая статья
https://weblogs.asp.net/dwahlin/the-role-of-interf...

Ну и простое толкование, причем первое более понятное, это точка взаимодействия, договор

Interface

a point where two systems, subjects, organizations, etc. meet and interact.
the interface between accountancy and the law
2
COMPUTING
a device or program enabling a user to communicate with a computer.
a graphical user interface
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Очень много где эти 2 оператора взаимозаменяемы и результат будет равносильный.
Однако пару различий все же есть:
1. interface поддерживает declaration merging, а type - нет. Это бывает полезно для библиотек, которые позволяют расширять свое api, например через плагины.
Так же, при проверке типов, typescript будет учитывать для interface, что он может быть расширен за пределами текущего проекта что наложит ряд ограничений.
2. type позволяет вычислить тип. interface имеет гораздо меньше возможностей в этом плане.

Вообще это дело вкуса, но для себя я выбрал следующий подход:
Использовать interface для типов которые экспортируются из библиотеки/npm-пакета и подразумевают возможность внешнего расширения описываемой сущности.
Во всех остальных случаях использовать type.
Ответ написан
Комментировать
Swartex
@Swartex
Многорукий могоног
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы