@typescript_ru

Страница 127 из 669
Roman
04.12.2016
19:50:48
да, уличная магия по ходу какая-то

Vasiliy
04.12.2016
19:50:57
ну вот я целое число даю ему

судя по тому, что написано в ридми это должно работать

Roman
04.12.2016
19:51:18
но не работает

Google
Vasiliy
04.12.2016
19:51:19
foo(2) // flow ok, tcomb ok

да, дичь какая-то)

Тслинт
а вот этим не пользуешься? https://github.com/Microsoft/vscode-chrome-debug

Vladimir
04.12.2016
20:36:00
Roman
04.12.2016
20:36:18
а статически нет?

Vladimir
04.12.2016
20:36:30
нет, в том и суть

этого плагина

Roman
04.12.2016
20:37:08
просто он пишет

foo(2) // flow ok, tcomb ok

а флоу не ок как бы

Vladimir
04.12.2016
20:37:23
да, это странно

Котяй Негодяй
04.12.2016
20:37:26
Этот ваш flow — боль.

У него какое-то странное представление о covsrage. Скажите, там всё ок? Есть баги?

Google
Vladimir
04.12.2016
20:38:12
В coverage?

Котяй Негодяй
04.12.2016
20:38:26
flow coverage

Vladimir
04.12.2016
20:38:35
просто он пишет
Мне кажется все зависит от $Refinement

Котяй Негодяй
04.12.2016
20:38:49
Ну, он мне писал, что у меня одно выражение непокрыто.

А там ВСЁ покрыто. Там и покрывать-то нечего.

Vladimir
04.12.2016
20:39:10
Скорее если баг и есть, то не в coverage

Котяй Негодяй
04.12.2016
20:40:03
Ну, с такими аномалиями вообще кто-то сталкивался? А то я не знаю — продолжать плясать с бубном, или искать причину вовне.

Vladimir
04.12.2016
20:40:22
Да, такое бывает

Можно попробовать поискать причину

Но если не охота, то просто ограничиваешь распространение проблемы аннотацией

Если кинешь фрагмент кода, то может что еще можно будет сказать

Котяй Негодяй
04.12.2016
20:43:00
А вообще, хорошая практика — покрывать всё-всё-всё? Или не обязательно? Просто flow сам неплохо всё обсчитывает, и здравый смысл подсказывает, что можно ограничивать только аргументы и return.

Vladimir
04.12.2016
20:43:40
Лишних аннотаций лучше не добавлять

В локальных функциях и классах они чаще всего вообще не нужны, но тут их можно использовать по вкусу

coverage никак не связан с аннотациями

Котяй Негодяй
04.12.2016
20:44:40
Вот тут не понял.

Vladimir
04.12.2016
20:45:30
coverage - это процент выражений, у которых определен конкретный тип (не any или empty)

Можно иметь 100% coverage без единой аннотации

За счет type inference

Google
Vladimir
04.12.2016
20:46:38
Аннотации помогает с coverage в ситуации, когда уже есть выражение с any

Котяй Негодяй
04.12.2016
20:46:54
То бишь, coverage — процент выражений, которые flow вообще сможет определить?

Vladimir
04.12.2016
20:47:19
Процент нетипизированных выражений, грубо говоря

Котяй Негодяй
04.12.2016
20:48:18
Так. И за 100% coverage гнаться в принципе не стоит, а нужно просто делать check и всё?

Vladimir
04.12.2016
20:48:49
Нет, за 100% coverage гнаться стоит, но это не значит что нужно добавлять аннотации без разбору

Нужно смотреть, откуда появляется any и либо решать проблему на корню, либо ставить аннотацию как можно ближе к источнику проблемы

Котяй Негодяй
04.12.2016
20:49:52
Тогда вот думаю — нормальная практика реджектить коммит без 100% coverage?

Vladimir
04.12.2016
20:50:11
Нет, во многих кейсах 100% недостижимо

Котяй Негодяй
04.12.2016
20:51:01
Типа там, где много нетипизированных зависимостей, аннотирование которых займёт много времени?

Vladimir
04.12.2016
20:51:31
Нет, это пример когда можно достичь 100%

Самый простой пример - try catch

Ошибка в catch будет всегда непокрыта

Котяй Негодяй
04.12.2016
20:52:04
Оу... Почему?

Vladimir
04.12.2016
20:52:57
Для нее безопасным типом является только mixed, но для соответсвия реальным практикам js ее сделали any

Аннотация прямо в catch не поддерживается, к сожалению

Котяй Негодяй
04.12.2016
20:53:35
А, даже так.

Ну, так-то, в теории, я вполне могу описать, что может вернуться.

Aleh
04.12.2016
20:54:03
Аннотация прямо в catch не поддерживается, к сожалению
По сути для такого надо делать у каждой функции кроме ретурн типа ещё и набор возможных эксепшенов

Vladimir
04.12.2016
20:54:42
Да, но с учетом интеропреабилити с обычным js все равно буду косяки

Google
Vladimir
04.12.2016
20:55:46
Ну ошибка в либе, ошибка в тайпинге и т д

Котяй Негодяй
04.12.2016
20:55:51
У меня есть практика и свои исключения создавать, перехватывая всё, что можно, на самом нижнем уровне кода.

Aleh
04.12.2016
20:56:07
Ну ошибка в либе, ошибка в тайпинге и т д
Не, ну такое и для ретурна ж справедливо)

Не, ну такое и для ретурна ж справедливо)
Или для параметров функции

Vladimir
04.12.2016
20:56:26
Ну, отчасти да

Но например может RefernceError из либы всплыть

Или что то такое

В джаве такое тоже есть, но там catch указывает класс

Котяй Негодяй
04.12.2016
20:57:21
Но например может RefernceError из либы всплыть
Так все типы ошибок можно в теории согнать в один и подключать его потом.

Admin
ERROR: S client not available

Vladimir
04.12.2016
20:57:49
Ну это означается что в каждом catch нужно проверять на все такие типы

Aleh
04.12.2016
20:57:57
В джаве такое тоже есть, но там catch указывает класс
Ну это же сахарок над if+instanceof+else throw

Vladimir
04.12.2016
20:58:20
Иногда сахарок все меняет

Котяй Негодяй
04.12.2016
20:58:23
Это было бы логично. Ошибка — это объект. В общем-то, его структура заранее почти всегда известна.

Vladimir
04.12.2016
20:58:52
> @bigslycat В общем-то, его структура заранее почти всегда известна. Ну, не с точки зрения строгого статического анализатора

Котяй Негодяй
04.12.2016
20:59:15
Ага, throw "abc"
А вот это неправильно, я считаю.

Aleh
04.12.2016
20:59:26
Я согласен, но так можно

Котяй Негодяй
04.12.2016
20:59:49
Если делаешь throw, создавай экземпляр ошибки или своего класса, наследованного от ошибки.

Aleh
04.12.2016
21:00:09
Только заранее реши проблему наследования от ошибки ))

Google
Котяй Негодяй
04.12.2016
21:00:20
Я согласен, но так можно
Но тогда нормальная практика — ввести такое ограничение.

Aleh
04.12.2016
21:01:27
Ачотам?
http://stackoverflow.com/questions/31089801/extending-error-in-javascript-with-es6-syntax

Но тогда нормальная практика — ввести такое ограничение.
Да, но я просто как пример, что жс не так прост)

Vladimir
04.12.2016
21:02:23
Мне кажется это должно работать из коробки

Котяй Негодяй
04.12.2016
21:02:40
http://stackoverflow.com/questions/31089801/extending-error-in-javascript-with-es6-syntax
Ну... Не так уж и неудобно. =) Можно ведь вообще в промежуточный класс засунуть эту логику.

Vladimir
04.12.2016
21:03:25
Да, все работает

Nikita
04.12.2016
21:03:41
Самый простой пример - try catch
вот странно, что try-catch нельзя исключить из coverage в таком случае

Vladimir
04.12.2016
21:03:56
Наследование встроенных классов долго было в сломанном состоянии

Nikita
04.12.2016
21:04:01
понятно, что error: any, но можно же дальше обязать делать проверки через coverage

Vladimir
04.12.2016
21:04:22
Ну оно либо any либо mixed

Если any, то проверки не нужны

Nikita
04.12.2016
21:05:16
не, для catch-блока, имею ввиду

Vladimir
04.12.2016
21:05:36
все равно не понял

Nikita
04.12.2016
21:07:38
try { foo(); } catch (e) { if (typeof e === 'string') { console.log(e); } }

имеем код, чисто теоретически в нем не будет ошибок из-за типов

хочется чтобы coverage в данном случае был 100%

Котяй Негодяй
04.12.2016
21:08:17
Ну костыль же.

Nikita
04.12.2016
21:08:24
почему костыль?

Vladimir
04.12.2016
21:08:25
ну так не может быть логически

потом что e - any

Nikita
04.12.2016
21:08:44
понятно, что e - any

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