@typescript_ru

Страница 113 из 669
Nikita
07.11.2016
13:48:26
@vkurchatkin а как flow дебажить?

ну то есть я хочу понять, почему flow думает, что в этом месте я ошибся, хочу выяснить, что там за тип, по его мнению. как это сделать?

Nikita
07.11.2016
13:50:26
ну в каких-то случаях да, в каких-то помогает только медитация))

Google
Nikita
07.11.2016
13:51:18
вот думаю автокомплитом попробовать

Sergey
07.11.2016
13:54:04
мб action.payload нулабл?

Nikita
07.11.2016
13:54:28
в некоторых случаях да, но там и P nullable

Vladimir
07.11.2016
13:55:11
ну я просто в нуклиде смотрю

в консоли что типо type-at-pos

Nikita
07.11.2016
14:04:53
http://bit.ly/2fv1EcZ

вот так выглядит. видимо не получить FSA описать на flow?(

а, с update понял. там надо SuccessAction поставить.

@vkurchatkin поправил ссылочку, есть идеи?

Vladimir
07.11.2016
14:09:40
чето длинно

можно покороче пример?

Nikita
07.11.2016
14:10:58
щааа

Vladimir
07.11.2016
14:13:45
Короче примерно проблема понятна

Google
Nikita
07.11.2016
14:14:15
https://flowtype.org/try/#0C4TwDgpgBAygrgYwRAziggg4BLA9gOwB4AVcCALihWACdt8BzAGigAUBDEAG13YBMAfFAC8UAN4AoKFFCRKpSEylQINGrhoB+SgDN2XFBCXSwnHv0oduvPhIC+AbgkTZ0AKJqNmHARJlK1HSMQqKS0q7yZMYqnjSUtHBGyqbWFlAe6jT2Ti5kbBD4fPQM3nhEChRUtMUh4soRUBXRqpnaUHoGSSZmNpQAbrjYfNEAthDA7JRh0lCQhcXxNInKdtnOrlClvhUB1YwsVuaCIrCIyGhb5VFsPfxCAD7psZd+kA-584wvFQI5GwBi2AgXD4hFYtWmfX0iUszVilE0GQ00TmRUYlAARrhcFwIOx8GsJDo4PgsGUoEdAcDQcRdkFmGwBAAKajsYCVKkgsECFjsMkESjfA4CACUlE5oPBdWk2B0UCZfJ8+AAdGMJlAAGQaqCKsqq8bsZWo4oi6UzGjjOA0fBmmZQKFcGFVNkQZUOxLRO0tDS7F3K700T0zY3omRLCDKaSOFbOaQW4BWm3TaTuyq6gj+2JQTTO9lu6HQSjplUpI5BgNF-kqgPZnVVo23PhQSj4OBcLhBkMMXT6QwrJyrIA

вот так короче)

Vladimir
07.11.2016
14:15:02
А почему ты думаешь, что action.payload типа P

?

Выглядит как void | Error | P

Nikita
07.11.2016
14:15:45
может я и не прав, а почему не P?

так там проверки есть

смотри, без PendingAction работает

Sergey
07.11.2016
14:17:49
а void применим к полям объектов?

Vladimir
07.11.2016
14:17:57
Ты исходишь из того, что если есть action.meta, то это pending?

Nikita
07.11.2016
14:18:08
https://flowtype.org/try/#0C4TwDgpgBAygrgYwRAziggg4BLA9gOwB4AVcCALihWACdt8BzAGigAUBDEAG13YBMAfFAC8UAN4AoKFFCRKpSEylQINGrhoB+SgDN2XFBCXSwnHv0oduvPhIC+AbgkTZ0AKJqNmHARJlK1HSMQqKS0q7yZMYqnjSUtHBGyqbWFlAe6jT2Ti5kbBD4fPQM3nhEChRUtMUh4soRUBXRqpnaUHoGSSZmNpQAbrjYfNEAthDA7JRh0lCQhcXxNInKdtnOrlClvhUB1YwsVuaCIrCIyGhb5VFsPfxCAD7psZd+kA-584wvFQI5GwBi2AgXD4hFYtWmfX0iUszVilE0GQ00TmRUYlAARrhcFwIOx8GsJDo4PgsGUoEdAcDQcRdkFmGwBAAKajsYCVKkgsECFjsMkESjfA4CACUlE5oPBdWk2B0UCZAEI+T58AA6MYTEXSmY0cZwGj4bUzKBQrgwqDKsqqloaKCaKpsiCq02JKCUS0EVUpI7RY02uIW-lq-12wMqr23PhuqD4OBcLi+maohbtfSGZTSRwrZTKWXyj1qjXsL0FNEMLXTaS64D6w2VmYuyqs9nO6FdY0xTK7R3W2KJkyllMJCAZqBZzMSACQymrtYd7Kc0nsEiAA

а еще вот так работает

Vladimir
07.11.2016
14:19:00
Проблема в том, что теоретически это неверно, т к и в других ветвях может быть meta

Ща проверю, но если flow это допускает, то это unsound

Nikita
07.11.2016
14:19:34
ну вот да, я думал об этом, то есть 2 вариант логически верней

Vladimir
07.11.2016
14:19:48
Sound проверка может быть только по полю, которое есть во всех ветвях

Nikita
07.11.2016
14:19:53
если мета пустая - значит хэндлим экшн, если не пустая - это спец-поведение

Vladimir
07.11.2016
14:20:24
Логически это будет верно для Exact типов

Google
Nikita
07.11.2016
14:21:16
гм, ну у меня экшны полностью flow покрыты и не может быть меты, которая не описана в типах. то есть с exactом колдовать?

Vladimir
07.11.2016
14:21:36
Не, пока не стоит, не думаю что это есть

Скорее всего unsound проверка работают

А, нет

Не работает

https://flowtype.org/try/#0FAFwngDgpgBAYgewTAvDA3sGMBmSBcMAziAE4CWAdgOYA0WMARkgLaEAUAlKgHwwBuCcgBNgAX2ChIsAEIBDUqgwNGCwpQCuLRlFLjJODZQDGIcgkowQUEuwAehRMgA+MeaW6Zs5HDHbhoBF87ADo8ZBRImAByEgoaaM8GAEhQ5gQWLgBuBgkYcSA

Nikita
07.11.2016
14:27:12
https://flowtype.org/try/#0FAFwngDgpgBAYgewTAvDA3sGMBmSBcMAziAE4CWAdgOYA0WMARkgLaEAUAlKgHwwBuCcgBNgAX2ChIsAEIBDUqgwM8CQswQAbKHMr1sjBYUoBXFoyilxknCcoBjEOQSUYIKCXYAPQomQAfGHlSbkxschwYdnBoBEivADpVVBQ0AHISCho00IYASESNFi4AbgYJGHEgA

не баг?

Vladimir
07.11.2016
14:28:11
Вот здесь должно работать

Не баг, но не круто

Типы не пересекаются

Nikita
07.11.2016
14:28:31
угу, есть с чем сравнивать. так экшны примерно распознаются

Vladimir
07.11.2016
14:29:11
Т е чисто теоретически 'FOO' и 'BAR' это точно также непересекающиеся типы

Nikita
07.11.2016
14:29:36
но флоу не может это гарантировать

а если указан foo и там и там - может

Vladimir
07.11.2016
14:29:58
Да, о том и речь

Nikita
07.11.2016
14:39:27
@vkurchatkin https://flowtype.org/try/#0MYGwhgzhAEAq0G8BQ1oEsIDED2wCuEApgCYAUAlAFzQBG22IhYAdoiqtAE6EAuenrHpzyF2AXyTsAZvQrUAbtjTE2HdFOikeACwwA6DDnxFi5RNAD0F6DwCeAB2zs1wbMwgNCekNgDmpAHI0VhljAPIAbmdoCVQJMSA

а подобное флоу никогда не будет ловить?

Vladimir
07.11.2016
14:40:44
Хз, я думаю это дискуссионный вопрос

Понятно, почему они так сделали, но я думаю что это плохо

Google
Nikita
07.11.2016
14:42:21
в eslint написал, вроде приняли и будут делать правило, но у flow это прям лучше бы получилось

тк есть четкая граница между методом и переменной

Vladimir
07.11.2016
14:42:38
И дело даже не в опечатке, а в том, что чтение необявленных полей это должно быть прямо вообще под запретом

Nikita
07.11.2016
14:43:43
ну тут js-сный неявный undefined всплывает

Vladimir
07.11.2016
14:46:15
нет, в том то и дело, что там может быть что угодно

Nikita
07.11.2016
15:35:26
а что вы с reject в промисах делаете? там же any, свои дефинишны?

Admin
ERROR: S client not available

Nikita
07.11.2016
15:38:45
ну, хочется строго типизировать

Aleh
07.11.2016
15:39:14
reject же должен мочь все, что можно в throw?

Nikita
07.11.2016
15:40:20
а resolve все, что можно в =, но это не отменяет же типизацию?)

я имею ввиду, что именно этот промис должен вернуть именно Error, например. В reject

Aleh
07.11.2016
15:41:08
ну, throw ж не типизируется

Nikita
07.11.2016
15:41:46
это не есть хорошо)

Aleh
07.11.2016
15:42:45
наверное

Nikita
07.11.2016
15:42:48
тем более, что интерфейс промисов позволяет типизировать

Vladimir
07.11.2016
15:45:30
Это невохможно сделать, потому так

И в TS и во Flow

Aleh
07.11.2016
15:48:35
а почему?

Vladimir
07.11.2016
15:49:24
Потому что then и т д ловят все ошибки

Google
Vladimir
07.11.2016
15:49:44
Следовательно тип в catch нельзя гарантировать

Nikita
07.11.2016
15:55:37
то есть надо для каждой ошибки проверять, что это реально ошибка?)

Vladimir
07.11.2016
15:56:14
Ну да

Увы, но это реальноть js

Nikita
07.11.2016
16:44:41
с кем-то мы тут спорили, зачем я Type: string в дженериках делал

вот еще пример: declare function enableBatching<F: Function>(reduce: F): F;

reduce мне влом описывать, но и ломать тип я не хочу. могу сказать, что это функция, а какая - плевать.

Vladimir
07.11.2016
16:47:15
Ну на практике какая то функция - это бесполезный тип

Дмитрий
07.11.2016
16:50:00
reduce мне влом описывать, но и ломать тип я не хочу. могу сказать, что это функция, а какая - плевать.
Просто это бессмысленный дженерик (не считая того, что это также и бессмысленный тип) Твой синтаксис записывается так declare function enableBatching(reduce: Function): Function

Более того

Vladimir
07.11.2016
16:50:48
Кроме пожалуй случая заворачивания, но для этого нужен existential для аргументов

Nikita
07.11.2016
16:50:49
const store = createStore(enableBatching(rootReducer), middleware);

вот тут

Дмитрий
07.11.2016
16:50:56
Тогда тебе нужен просто дженерик

Nikita
07.11.2016
16:51:01
Тогда тебе нужен просто дженерик
а если я ошибусь и передам не то?)

Страница 113 из 669