Иногда я пишу на JavaScript, и этот JavaScript неизменно усеян ошибками. Они часто сводятся к доступу к неопределенным атрибутам объектов. Однако движки JavaScript, похоже, очень не хотят ошибаться; вместо того, чтобы падать, мои приложения спотыкаются как можно дольше, распространяя значения undefined через свое состояние и плохо себя ведя. К тому времени, когда появляется очевидный симптом, он часто проявляется в совершенно отдельном компоненте от фактической ошибки (иногда это просто опечатка!).
Это, очевидно, преднамеренный и разумный выбор дизайна, учитывая варианты использования JavaScript, но при разработке это проблема. Существуют ли какие-либо методы, позволяющие заставить мой код с честью свалиться с лошади в случае неопределенного доступа, чтобы я мог помочь ему снова включиться?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


То, что вы описываете, это проверка типов. В наши дни двумя наиболее популярными вариантами проверки типов в JavaScript являются Машинопись (которую @AndreasMüller уже рекомендовал выше) и Поток. Использование любого из них должно помочь вам избежать доступа к неопределенным свойствам объекта и большему количеству запахов/проблем кода. Чтобы начать работу с TypeScript, ознакомьтесь с TypeScript за 5 минут.
Я не согласен с тем, что описываю проверку типов; неудачный поиск атрибутов вызывает ошибку гораздо менее интенсивно, чем это! Но спасибо за подсказку, похоже, TypeScript действительно поможет.
На мой взгляд, это одна из многих причин, почему существуют такие вещи, как Typescript typescriptlang.org, которые предотвращают эти вещи, хотя проверки типов во время компиляции