Size: a a a

Clojure — русскоговорящее сообщество

2020 May 08

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну опять же работа на удовлетворение компилятора 😊
ну так и есть
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
и без тестов это все взрывается всегда
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Sergey Trofimov
у меня простой вопрос
функция f1 — описана как int->int и реализована как return f2(x), про которую ничего не описано
будет ли ts как-то ругаться?
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Andrew Rudenko
проверить в рантайме
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
вот в ТС есть такое. ни о какой особой безопасности тут речи не идет, но зато удобно )
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Sergey Trofimov
у меня простой вопрос
функция f1 — описана как int->int и реализована как return f2(x), про которую ничего не описано
будет ли ts как-то ругаться?
правильно я понял пример ваш тут?
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Vlad Lisovsky
правильно я понял пример ваш тут?
так нет конечно
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
он f2 из f1 вызывал в примере
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
ой да, перепишу
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
ну так вот, если это еще может работать со структурами как-то, то с функциями уже нет
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Sergey Trofimov
и как оно работает, если у меня есть одна функция, обмазанная требованиями по типам, а всё остальное вокруг произвольной формы?
Не скажу за TS, но когда я писал про gradual types,  я имел ввиду примерно следующее.
Вот есть у меня функция например feedDog(dog: Dog) и это значит что вызывающий код каким-то образом должен в эту функцию однозначно передать Dog. Как пример нам в реквест хэндлер приходит мапа, мы делаем проверки, создаём из этой мапы класс Dog и уже передаём в нашу функцию.
Компилятор легко сможет проверить что именно мы пытаемся передать.

Или ещё пример: какой-нибудь MoneyConverter может на вход принимать динамическую переменную (any), делать свою магию внутри, а на выходе давать тип Money. И в типизированные функции вы будете передавать только его, компилятор сможет проверить
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Вообще, можно было не обзываться, а просто написать что он в конце сделал:

Переименуйте ваши файлы JS на TS. Чао
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Tim Plotnikov
Не скажу за TS, но когда я писал про gradual types,  я имел ввиду примерно следующее.
Вот есть у меня функция например feedDog(dog: Dog) и это значит что вызывающий код каким-то образом должен в эту функцию однозначно передать Dog. Как пример нам в реквест хэндлер приходит мапа, мы делаем проверки, создаём из этой мапы класс Dog и уже передаём в нашу функцию.
Компилятор легко сможет проверить что именно мы пытаемся передать.

Или ещё пример: какой-нибудь MoneyConverter может на вход принимать динамическую переменную (any), делать свою магию внутри, а на выходе давать тип Money. И в типизированные функции вы будете передавать только его, компилятор сможет проверить
«я имел ввиду примерно следующее»
а я спрашиваю про реальные случаи, которые работают так как это «примерно представляется»
ибо в моём представлении, как только начнёшь это делать, то типизация потребуется по всей цепочке сопрягаемых элементов (в контексте статической compile time типизации)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
я сам на ts не пишу, мне трудно понять
хотелось бы услышать, что действительно есть решения, дающие плюсы статической типизации, но только на части кода, интересной программисту
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
представляя себя на месте компилятора, я затрудняюсь понять, как бы я это делал 😊
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Sergey Trofimov
я сам на ts не пишу, мне трудно понять
хотелось бы услышать, что действительно есть решения, дающие плюсы статической типизации, но только на части кода, интересной программисту
легко же
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Как перевести проект среднего / большого размера с JS на TS?
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
П - постепенно! TypeScript может компилить файлы обоих типов. Нету типов - нету проверки, все
источник