Если я пишу ТС-библиотеку, то я подразумеваю, что она юзается в ТС
Кроме "данных извне" есть ещё и работа частей кода между собой. И кто-то может не касаться ввода вообще, а получать его уже отвалидированый из другой части системы/с другого уровня, например. И вот в этом взаимодействии описание типов и следующая из этого самодокументированность позволяет
1) Повысить DX
2) Обезопаситься от ошибок времени разработки - если ты передал не то и не туда, твой код просто не скомпилируется.
3) То же относится и к библиотекам. Если они на ТС и для ТС - проверять ничего не нужно, код просто не соберётся, даже если увидит, что ты передаешь any туда, где нужно что-то конкретное
4) Чем больше, длиннее и шире проект и чем больше людей над ним работают, тем это важнее
И самое во всём это важное, с моей точки зрения (и в чём был изначальный поинт) - это не стоит ничего. Ноль рублей ноль копеек. Просто пишешь тип не в жсдоке, а ближе к самому коду и всё просто работает.
Ты же отдаешь себе отчет в том, что клиентский код может модифицироваться на этом самом клиенте. И в случае, если какое-нибудь расширение браузера, пользователю модифициурет рантайм таким образом, что твой код, начинает стрелять куда попало, вместо того, чтобы как-то осмысленно упасть, а в идеале еще этого пользователя и уведомить, что что-то пошло не так, то поведение вовсе может быть непредсказуемо. Начиная с того, что даже воспроизвести ошибку ты не сможешь, потому что не поймешь откуда она, логовжинет. Зато все скомпилировалось, без ошибок, да.