BonBonSlick
@BonBonSlick
Vanilla Web Architect

Для чего интерфейсы в Vuex модулях?

Вот пример того что я имею ввиду, что бы сделать более С подобным? Ведь можно было обойтись и без этого и использовать к примеру просто класс, не понимаю для чего эта прослойка
@Module({ dynamic: true, store, name: 'user' })
class User extends VuexModule implements IUserState {
  public token : string = getToken() || ''
  public name : string = ''
...

так и коду меньше.
А где надо использовать юзера как тип ставим User вместо IUserState
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Для большей структурированности кода.
Вы таким образом формально отделяете "UserState" от всего что может этот UserState реализовывать.
он может использоваться не только в классе User, а и в других местах.
Например, понадобился мне RandomUser, который все поля делает случайными. но при этом может использоваться вперемешку с User, потому что тоже имеет интерфейс UserState. При этом у него нет половины тех методов что у User, поэтому вы не сможете его использовать там где напишете тип User.
Вам надо будет писать "User | RandomUser". это уже не очень, а если их 10 разных?

А если в каком-то месте 8 написали а про два забыли? А в другом месте 8 написали а 2 не написали, потому что там реально может быть один из 8 типов а те два не могут быть.
А если у нас есть тип пользователей "начальник" у которого есть все те поля что у пользователя но еще дополнительное поле "сотрудники"? И таких типов тоже несколько. И где-то надо убедиться что именно такой тип у переменной. И так далее.
Явно заданные интерфейсы позволяют отделить все эти сущности от остального кода, структурировать этот код заметно лучше и держать его в порядке меньшими усилиями. И самого его тоже становится меньше.

НО! Если у вас десяток классов в приложении, и каждый класс соответствует одному интерфейсу, то пользы от такого подхода мало. Можно эти интерфейсы и не писать. Это пришло из ООП, где решают проблемы, возникающие в приложениях с сотнями сущностей и классов, сложной иерархией и так далее.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Senior .NET developer
typescript думает за вас и показывает где возможные ошибки, ну и сахар некоторый.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы