🔥

Тред (Дима Коваленко)


Окей, так уж и быть накидаю тайпскрипту. P.S. У меня вообще какая-то дурацкая привычка обсирать то, чем я пользуюсь :)

Ну во-первых typescript себя не позиционирует как СТРОГОСТЬ. Это скорее такой баланс между типизацией и продуктивностью. Чего только стоит это долбанное any или оператор (или это не оператор) ! которые просто отключают любые проверки.

Во-вторых огромное количество конструкций не требует реального доказательства, например is
notion image

При чем , что если убрать функцию check он понимает что у переменной не может быть состояния number
notion image

@jsunderhood так ну все приличные люди банят any и ! на уровне линтера иначе же весь смысл теряется
Вот поступил комментарий что все нормальные люди банят any twitter.com/t1tvs/status/1…. А вы знаете что происходит внутри дефинишенов, которые вы используете?

notion image

Или например generic-и, ну это если честно вообще боль. Описание дженериков в тайпскрипте це боль. А все потому что ты должен все описывать руками. И это работает неплохо на простых примерах. Но потом ты сталкиваешься с реальностью
notion image

Ну либо потом к тебе заходит ПР github.com/cypress-io/cyp…
notion image

Really love writing complex typescript generics. Because other devs looking at your code like at the black magic 🙄
twitter.com/dmtrKovalenko/… Как-то запостил такую фигню и меня закидали помидорами, но это реально так – вот такую байду понять нужно как минимум долго сидеть и вчитываться в код. А по-другому и не напишешь.

А еще можно накидать за структурную типизацию. То есть любые объекты с совпадающей структурой будут равнозначными. А на этом можно сильно напоротся. Вот из жизни пример с системами координат. P.S. функция будет неправильно работать
notion image

Но это может быть пофикшено вот этим ПР-ом github.com/microsoft/Type…

Ну или вот, потеря типов на тюплах на абсолютно любых взаимодействиях с массивом
notion image

Короче еще куча всего, тайпскрипт это скорее штука для ускорения разработки, чем для действительно строгих проверок на работоспособность кода.