intermediate

Public versus private API

Expose narrow stable contracts и держите internal helpers private, чтобы refactors не становились breaking changes.

Публичный API модуля — экспорты, на которые могут опираться другие команды; остальное — детали реализации. Узкая публичная поверхность снижает риск breaking changes и удешевляет рефакторинг. В TypeScript и пакетных экосистемах barrel-файлы и export maps — инструменты политики, а не только удобства.

На интервью: опишите, как запрещаете импорт internal helpers. Упомяните semver, окна deprecation и когда ломать, а когда расширять контракт.

Типовые ошибки: экспорт всего из index; утечка internal types в публичных сигнатурах; рефакторинг helpers, уже широко импортированных.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Явные public entry points на пакет или папку.
  • Internal symbols не экспортируются или private.
  • Новые экспорты — в code review.
  • Документируйте ожидания стабильности публичных контрактов.