TGViewer
Asynchronous Programming Asynchronous Programming @asyncify · 1.97K subscribers
Post #83 2.94K
Почему нужно избегать union-тайпов?

1. Каждый раз, когда юнион куда-то приходит аргументом, нужно делать if, чтобы понимать, как с ним работать, кроме случая, когда все классы/типы, входящие в юнион имплементируют один и тот же интерфейс и нас интересует обращение именно через этот интерфейс, зачем тогда юнион, используйте этот интерфейс вместо него, ну если в юнион не входит undefined, null, unknown и т.д.

2. Юнионы приводят к мегаморфной форме обращения к объектам в V8, и это замедляет код, не сметртельно, но это неприятно и проще всего всего забыть их. Но для чего же они тогда вообще нужны? Для совместимости с JS, если в нем можно передать что-угодно аргуметом, то это нужно меть возможность как-то выразить. Это не значит, что это хорошо и так нужно писать кода, это добавили как возможность, а не как обязанность )

3. Это часто ведет к нарушению SOLID:SRP (принципа единственной отвественности), потому, что как может метод, например, получать сокеты или таймеры на выбор и делать разные вещи в зависимости от этого, это же маразм, нарушает SOLID:LSP (принцип подстановки), иногда нарушает GRASP:InformationExpert, явно повышает Coupling.

Вместо этого нужно всегда использовать маленькие интерфейсы, заточенные под узкую задачу, помним про SOLID:ISP (принцип разделения интерфейсов) и могут быть optional аргументы, для этого не нужно делать union с null.
  • 👍 8
  • ❤ 4
  • 🔥 2
  • 🤯 2
More from @asyncify
  1. Sep 28, 2026https://youtu.be/0GZ-Nf8yHEw
  2. Sep 26, 2026https://youtu.be/hKigdmvste0
  3. Sep 25, 2026В эту субботу будет стрим по применению AI в создании архитектуры. - архитектурный дрейф и…
  4. Sep 23, 2026https://www.youtube.com/watch?v=Bca7s7Yvhzk
  5. Sep 21, 2026https://youtu.be/el7RuL98KL8
  6. Sep 12, 2026https://youtu.be/YhmhmVThjNc
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →