Если вы используете свой код только для себя или своей команды, и все, что вы или ваша команда создаете, написано на TypeScript, тогда вам не нужны такие проверки. В противном случае, если вы делитесь или планируете поделиться своим кодом, ему понадобятся границы. Даже код, который вы не пишете, должен иметь границы. Где эти границы находятся и является решением для проектирования и разработки. Некоторые библиотеки имеют большие границы (например, стандартная библиотека языка), а другие имеют очень маленькие контролируемые границы.
На этих границах вы можете выполнить вышеуказанные проверки. Как утверждает ваш коллега, ничто в TS не защитит вас во время выполнения. Если вы создали модуль TS и опубликуете его в NPM, вы должны опубликовать JS. Разработчик JS может импортировать / запрашивать ваш модуль, использовать его в своем коде JS и передавать все, что пожелает.
Кроме того, даже если вы уверены, что ваши вызывающие абоненты также будут использовать TypeScript, у вас все равно могут возникнуть проблемы с проверкой границ. Например, проверка того, являются ли объекты неопределенными или нулевыми, проверка правильности передачи JSON из веб-запроса и т. Д. Однако JS - такой свободный язык, что он требует довольно полных проверок границ, поэтому неудивительно, что вы увидите они в обучающих программах по TS, как разработчики JS, которые мигрировали, привыкли делать это.
На данный момент это, вероятно, основано на мнении. Например, я знаю многих разработчиков, которые исчерпывающе разбрасывают пустые проверки по всей базе кода. Вообще я лично вижу в этом симптом плохого дизайна и неосведомленности о границах. Лично я категорически против идеи проверки и подтверждения достоверности, чтобы ошибка обнаруживалась раньше. Такие проверки усложняют читабельность кода и сокращают его обслуживание.