Если цель — снижать класс ошибок за счёт статической проверки и проектировать выразительный API, посмотрите курс по TypeScript.
Главное, что отрабатываем (кратко и по делу):
🔘 Дженерики с ограничениями: параметризация API без
any, вывод и значения по умолчанию.🔘 Сужение типов и дискриминированные объединения: исчерпывающие проверки, отсутствие «мёртвых» веток.
🔘 Conditional / Mapped / Template literal types: производные модели, безопасные ключи и события.
🔘 Вариантность колбэков и сигнатур: корректная совместимость параметров в обработчиках.
🔘 Брендированные (opaque) типы для идентификаторов и единиц: защита от подстановки «не той строки».
Курс про практику проектирования типов: меньше рантайм-сюрпризов, больше строгости на этапе компиляции. Подробности на лендинге.
https://htmlacademy.ru/levelup/typescript


