Я видел как из тс себе в ногу стреляли. Причём тс не виноват, жс не виноват, автор не виноват, и всё в шоколаде. Но на выходе фигня.
Там была такая штука:
1) Автор написал на тс либу, в утке заяц^W^Wлибе была функция, которая принимала на вход string. Тс очевидно ругался если туда передавать не стринг. Автор полагался на проверку тс.
2) либа собралась из тс в жс, была опубликована в npm и использовалась сторонними проектами. при сборке тс->жс тайпскрипт не добавляет проверки типов в рантайме, он просто все аннотации типов выкидывает нахрен (и проверки теряются).
3) В случае, если там оказывалась не строка, либа творила фигню и убивала котят и твоего домашнего хомяка.
4) юзеры либы тоже сфейлили валидацию на входе, потому что не ожидали такого подвоха