intermediate
Объектно-ориентированное программирование
Используйте классы, объекты, инкапсуляцию, наследование, полиморфизм, абстракцию и TypeScript-контракты там, где они проясняют поведение домена.
На интервью по ООП проверяют, умеете ли вы моделировать поведение с чёткими границами — а не знание UML наизусть. Ждут инкапсуляцию, подстановимость и контракты, переживающие изменения в JavaScript и TypeScript.
Темы: основы (классы, инкапсуляция, наследование, полиморфизм, абстракция), принципы проектирования (композиция, интерфейсы, DI, иммутабельность), механика TypeScript (модификаторы, abstract types, декораторы, структурная типизация) и практические компромиссы (когда ООП уместен в JS/TS, ООП vs functional, rich vs anemic models).
На интервью: объясните решение через конкретную границу класса или модуля и что сломается, если её убрать.
Типовые ошибки: глубокие деревья наследования, anemic models с логикой в сервисах, ООП там, где проще функции и данные.
Чеклист:
- Связывайте объекты с инвариантами и ответственностями.
- Предпочитайте композицию, если наследование не про настоящий подтип.
- Объясните структурную типизацию TypeScript vs номинальные ООП-языки.
- Назовите, когда functional style уместнее.