intermediate

Объектно-ориентированное программирование

Используйте классы, объекты, инкапсуляцию, наследование, полиморфизм, абстракцию и TypeScript-контракты там, где они проясняют поведение домена.

На интервью по ООП проверяют, умеете ли вы моделировать поведение с чёткими границами — а не знание UML наизусть. Ждут инкапсуляцию, подстановимость и контракты, переживающие изменения в JavaScript и TypeScript.

Темы: основы (классы, инкапсуляция, наследование, полиморфизм, абстракция), принципы проектирования (композиция, интерфейсы, DI, иммутабельность), механика TypeScript (модификаторы, abstract types, декораторы, структурная типизация) и практические компромиссы (когда ООП уместен в JS/TS, ООП vs functional, rich vs anemic models).

На интервью: объясните решение через конкретную границу класса или модуля и что сломается, если её убрать.

Типовые ошибки: глубокие деревья наследования, anemic models с логикой в сервисах, ООП там, где проще функции и данные.

Чеклист:

  • Связывайте объекты с инвариантами и ответственностями.
  • Предпочитайте композицию, если наследование не про настоящий подтип.
  • Объясните структурную типизацию TypeScript vs номинальные ООП-языки.
  • Назовите, когда functional style уместнее.