
Nikita
02.09.2016
16:19:06
в реальном приложении он принимает union типов, которые можно описать
иначе типы нахрен не нужны, потому что не уберегут тебя от ошибок в рантайме

Ҫѐҏӗѫӑ
02.09.2016
16:19:46
но не нужно.

Nikita
02.09.2016
16:20:38
и народ, который говорит что тесты надо с кодом менять, а типы такой збс себе выход. Я представляю сколько времени может уйти на рефакторинг с типами в js)

Google

Aleh
02.09.2016
16:21:38


Nikita
02.09.2016
16:23:08
но хочется) я бы очень хотел, чтобы система типов уберегала от того, что редьюсер вернет стейт неправильный
и касательно flow в реакте. Что с children делать?
потому что в реакте оно почти хорошо, кроме children и отсутствия рантайм проверок. Может есть для babel плагин, который в propTypes конвертил бы проверки?

Mike
02.09.2016
16:24:45
вообще по более строгой типизации ещё можно будет посмотреть кастомные правила на TS Lint, но я тему глубоко не копал, позже займусь
Народ, а кто эклипсом как ide для typescript пользуется?

Aleh
02.09.2016
16:39:56
State мы экспортим также как и reducer, в root reducer собираются все reducer + State и получается вполне удобно


Nikita
02.09.2016
16:43:57
https://www.typescriptlang.org/play/index.html#src=type%20Action%3CP%3E%20%3D%20%7B%0D%0A%09type%3A%20string%2C%0D%0A%09payload%3A%20P%0D%0A%7D%0D%0A%0D%0Atype%20AsyncAction%3CS%2C%20P%2C%20H%3E%20%3D%20(%0D%0A%09dispatch%3A%20Dispatch%3CS%2C%20P%2C%20H%3E%2C%0D%0A%09getState%3A%20StateGetter%3CS%3E%2C%0D%0A%09helpers%3A%20H%0D%0A)%20%3D%3E%20void%3B%0D%0A%0D%0Atype%20DispatchAction%3CS%2C%20P%2C%20H%3E%20%3D%20Action%3CP%3E%20%7C%20AsyncAction%3CS%2C%20P%2C%20H%3E%3B%0D%0Atype%20Dispatch%3CS%2C%20P%2C%20H%3E%20%3D%20(action%3A%20DispatchAction%3CS%2C%20P%2C%20H%3E)%20%3D%3E%20void%3B%0D%0Atype%20StateGetter%3CS%3E%20%3D%20()%20%3D%3E%20S%3B%0D%0A%0D%0Atype%20Store%3CS%2C%20P%2C%20H%3E%20%3D%20%7B%0D%0A%09dispatch%3A%20Dispatch%3CS%2C%20P%2C%20H%3E%2C%0D%0A%09getState%3A%20StateGetter%3CS%3E%0D%0A%7D%0D%0A%0D%0A
18 строка


Vladimir
02.09.2016
16:47:58
> @gusnkt
Я представляю сколько времени может уйти на рефакторинг с типами в js)
а без типов - раз два, и готово. и 100 новых багов
> @gusnkt
отсутствия рантайм проверок
а зачем?

Nikita
02.09.2016
16:48:42

Google

Vladimir
02.09.2016
16:48:59
тесты писать гораздо дольше
и они менее надежно
и их сложнее дебажить

Nikita
02.09.2016
16:49:11
и смотри) я не против типов) я против сложности, которую они вызывают. Я показал сложность выше. Если я ошибаюсь - покажи код)

Vladimir
02.09.2016
16:50:40
Нужно меньше тестов чтобы получить тотже уровень увернности

Andrey
02.09.2016
16:50:46

Vladimir
02.09.2016
16:50:50
Особенно при рефакторингах

Nikita
02.09.2016
16:51:48
меньше - это меньше каких тестов?

Vladimir
02.09.2016
16:52:14
просто - меньше

Nikita
02.09.2016
16:52:34
я не понимаю такой формулировки)

Vladimir
02.09.2016
16:52:57
все несколько абстрактно, но я говорю об “уровне уверенности” в коде

Nikita
02.09.2016
16:53:04
меньше - сравнительная форма) меньше должно быть чего-то. У маши яблок меньше чем у пети. Тут понятно все)

Vladimir
02.09.2016
16:53:05
Такой термин имеет смысл?

Nikita
02.09.2016
16:53:34
я понимаю о чем ты. Но я не понимаю, какие тесты я могу выкинуть с типами, чтобы быть уверенным в своем коде
например отсутствие рантайм проверок в деве на js меня заставляют нервничать)

Mike
02.09.2016
16:54:32

Vladimir
02.09.2016
16:54:43
Так вот, конкретное утверждение - для того чтобы получить уровень уверенности, который я получаю при 100% покрытии типами и 0% покрытии тестов, только с помощью тестов, мне нужно 100% покрытие тестами
что гораздо дольше

Google

Mike
02.09.2016
16:55:00
https://www.typescriptlang.org/docs/handbook/decorators.html

Nikita
02.09.2016
16:55:04
и я все еще напоминаю - я подрубил flow и с удовольствием использую его там, где это возможно без десятка дженериков)

Mike
02.09.2016
16:55:11
это кто-нибудь использует?

Nikita
02.09.2016
16:55:25

Vladimir
02.09.2016
16:55:28
дженерики - это хорошо, а не плохо

Nikita
02.09.2016
16:55:43
для коллекций - это хорошо)

Vladimir
02.09.2016
16:55:50
хорошо для всего

Nikita
02.09.2016
16:55:50
для всего кода - это ад
ну да)
иди на boost посмотри

マイク
02.09.2016
16:55:58
инварианты/контрварианты ещё лучше

Vladimir
02.09.2016
16:56:14
дженерики - это просто способ композиции типов
не нравится - можешь копи пейстить

Nikita
02.09.2016
16:56:37
нравится не нравится. Я не понимаю в чем смысл)

Ҫѐҏӗѫӑ
02.09.2016
16:56:45
с tape все ок

Vladimir
02.09.2016
16:56:58
> @chicoxyzzy
если у тебя жасмин, джест, мока или ава, то да
я не про то

Nikita
02.09.2016
16:57:02
когда ты пишешь код - должен быть смысл у каждого действия
мне проще написать лишний тест (какой такой лишний?), чем писать везде дженерики ради непонятно чего

Vladimir
02.09.2016
16:57:41
Лол) так дженерики ты пишешь, тебя никто не заставляет

Google

Vladimir
02.09.2016
16:57:59
Я пишу дженерики, чтобы добавить типам струтуры

Nikita
02.09.2016
16:58:15
блин)
я признаю - идиот и не понимаю ничего) покажи как надо?

Vladimir
02.09.2016
16:58:39
Как надо - что именно?

Nikita
02.09.2016
16:58:53
ну, свои flow дефинишны на redux, напримре?
я хотя знаю что ты скажешь))
ты не используешь redux?))

Vladimir
02.09.2016
16:59:05
на сам redux?
нет конечно)

Nikita
02.09.2016
16:59:18
ну ясное дело))

Vladimir
02.09.2016
16:59:47
давай набросаю концептуально

Nikita
02.09.2016
16:59:57
ну тогда то что используешь) потому что с redux, для меня, это нереально. Я выше накидал почему)

マイク
02.09.2016
17:00:17
покажи код

Aleh
02.09.2016
17:00:18

マイク
02.09.2016
17:00:21
что ты там с дженериками делаешь
ничего непонятно

Nikita
02.09.2016
17:00:39
в каком ни будь нормальном языке у редьюсера был бы паттерн-матчинг для типа экшна. И это было бы красиво и круто. Но не в js/ts


Aleh
02.09.2016
17:02:35

Google

Vladimir
02.09.2016
17:03:04
> @mkusher
абсолютно нет, тесты дают гораздо большую уверенность
я говорю персонально

Aleh
02.09.2016
17:03:16

Vladimir
02.09.2016
17:03:22
ибо тесты можно зафакапить так, что они не будут ничего тестировать

Nikita
02.09.2016
17:03:32
типы тоже
any поставил, считай нет типов больше)

Aleh
02.09.2016
17:03:48

Vladimir
02.09.2016
17:04:15
типы не показывают, что логика правильная
просто большая часть ошибок - не в логике

Nikita
02.09.2016
17:04:31
it('should?') =)

Aleh
02.09.2016
17:04:40
ну хз
)
возможно мы по-разному тестируем

Nikita
02.09.2016
17:05:03

Aleh
02.09.2016
17:05:16

Nikita
02.09.2016
17:05:21
обычный флоу с редаксом
ты пишешь экшн
пишешь редьюсер
пишешь тесты

Vladimir
02.09.2016
17:05:33
ща, редакс покажу

Nikita
02.09.2016
17:05:40
вероятность ошибиться в типах - ну прям мизер
в логике - запросто

Aleh
02.09.2016
17:05:56
мне тип стейта радуте в connect