
Vladimir
04.12.2016
21:09:24
оно как минимум any в typeof
Но и внутри тоже

Котяй Негодяй
04.12.2016
21:10:02
any — значит, что, следуя твоей логике, чтобы тебе засчитали 100% coverage, ты должен перечислить ВСЁ в этих if-конструкциях.

Nikita
04.12.2016
21:10:08
вот почему внутри - непонятно. по coverage я это увидел, да

Google

Котяй Негодяй
04.12.2016
21:10:22
А всё — это много, я подозреваю.

Vladimir
04.12.2016
21:10:57
С точки зрения type system any не нуждается в рефанменте
потому что он и так является подтипом любого типа

Nikita
04.12.2016
21:12:24
просто на мой взгляд, как пользователя, есть безопасные операции с any, а есть опасные.
typeof e - безопасно
e.message - небезопасно
можно смотреть, что на 1 уровне нет небезопасных операций с e и все будет ок

Vladimir
04.12.2016
21:13:20
да, пожалуй.

Котяй Негодяй
04.12.2016
21:13:22
Мне кажется, это усложнение для либы.

Nikita
04.12.2016
21:13:44
усложнение flow? типо ща там все просто))

Котяй Негодяй
04.12.2016
21:14:33
Я не могу толком аргументировать, почему это мне не нравится. Тогда flow будет лезть не в своё дело немного. Как-то так. =)

Nikita
04.12.2016
21:15:01
есть такая штука, как флаги)

Котяй Негодяй
04.12.2016
21:15:08
Слишком частный кейс, который должен будеть описывать при этом огромное количество вариантов.

Nikita
04.12.2016
21:15:37
а еще есть приоритеты фейсбука) вот то что им coverage в try-catch не приоритетен - вот в это верю)

Котяй Негодяй
04.12.2016
21:16:07
Проще разрешить типизацию e, оставив это на совесть разработчика, с ворниногм в документации. Не для маленьких детей же инструмент.

Nikita
04.12.2016
21:16:24
я тебе ща хак предложу)

Google

Котяй Негодяй
04.12.2016
21:16:39
Я знаю, о чём ты.
Функция-обработчик исключений.
И типизируй её как хочешь.

Nikita
04.12.2016
21:17:16
declare module 'fastjs' {
declare function tryCatch(tryFn: Function, catchFn: (error: Error) => void): void;
}
угу)
как-то так либа называется. да много их)

Котяй Негодяй
04.12.2016
21:17:51
Я итак хотел написать свой универсальный обработчик.

Vladimir
04.12.2016
21:18:03
оверхэд конечно

Котяй Негодяй
04.12.2016
21:18:09
Как-то всё к этому итак движется.

Nikita
04.12.2016
21:18:19

Котяй Негодяй
04.12.2016
21:18:23
Ну, это для логов всяких и репортов.

Vladimir
04.12.2016
21:18:32

Nikita
04.12.2016
21:18:43
потому что функция с try-catch не оптимизируется
а то что ты передашь в tryCatch - да

Котяй Негодяй
04.12.2016
21:18:57
Если кейс предусмотрен, то предусмотрено и действие. Если нет, то репорт куда надо.

Vladimir
04.12.2016
21:19:02
тем более это скоро будет не так
мне кажется замыкание дороже

Nikita
04.12.2016
21:20:09
https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#2-unsupported-syntax
это не я придумал)

Google

Nikita
04.12.2016
21:20:55
Native try {} catch (e) {} vs fast.try()
✓ try...catch x 151,059 ops/sec ±2.21% (79 runs sampled)
✓ fast.try() x 3,159,725 ops/sec ±1.20% (90 runs sampled)
Result: fast.js is 1991.72% faster than try...catch.
Native try {} catch (e) {} vs fast.try() (single function call)
✓ try...catch x 149,164 ops/sec ±2.11% (78 runs sampled)
✓ fast.try() x 3,785,055 ops/sec ±1.34% (89 runs sampled)
Result: fast.js is 2437.50% faster than try...catch.
https://github.com/codemix/fast.js/tree/master

Vladimir
04.12.2016
21:21:41
в генераторах это точно будет медленней

Nikita
04.12.2016
21:22:08
ну и у меня в бизнес-логике почти не разу не приходилось try-catch ставить. в драгн-дропе, вроде, единственное место

Vladimir
04.12.2016
21:23:00
не всегда
кроме ситуации когда в одном случае ты делаешь что то дорогое, в другом - нет

Nikita
04.12.2016
21:23:48
мм, не понял

Vladimir
04.12.2016
21:24:13
быстрее не аллоцировать замыкание чем аллоцировать - бенчмарки не нужны

Nikita
04.12.2016
21:24:32
быстрее оптимизированный код, чем неоптимизированный

Vladimir
04.12.2016
21:24:37
и кстати - бенчмарк паленый у этого фаста

Nikita
04.12.2016
21:25:16
вполне возможно, но генераторы - это же совсем иначе работающий код
там и try-catch по другому реализован, почти уверен

Vladimir
04.12.2016
21:25:48
У фаста как раз нет замыканий в бенчмарке
А на практике они будут почти всегда, причем по два или три за раз

Nikita
04.12.2016
21:29:12
норм?
ваще random не норм))

Vladimir
04.12.2016
21:30:08
Да уж

Nikita
04.12.2016
21:35:12
лол)

Google

Nikita
04.12.2016
21:35:14
неожиданно))
те быстрее в районе погрешности

Admin
ERROR: S client not available

Nikita
04.12.2016
21:36:52
вывод - делайте функции с try-catch небольшими и все будет ок
отправлю PR, наброшу))

Котяй Негодяй
04.12.2016
21:40:06
А что за шрифт? =)

Nikita
04.12.2016
21:40:22
Fira Code

des
05.12.2016
03:30:02
А как вам вообще TypeScript? Готов для продакшна? Стоит он того, чтобы его использовать для крупных проектов?

Алексей
05.12.2016
09:02:07
неожиданно))
Его выпиливали активно из RxJs - я про всякие fast-try-catch ( и в некоторых местах получили speed improvement используя обычный try-catch )

Oleksandr
05.12.2016
09:05:27


Dima
05.12.2016
09:59:54
Всем здрасьте! Решил поиграться с тайпскриптом на ноде и столкнулся с проблемой, что не все зависимости транспилятся. Как я думал - в конфиге указываю entrypoint и все зависимоти компилятся автоматически. На практике получается, что транспилится только один уровень вложенности. То есть есть server.ts - entrypoint, он имортит app/index.ts, который в свою очередь имортит dbClient.ts. В результате есть server.js, index.js, а dbClient.js уже нет.
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"compileOnSave": true,
"typeRoots": [
"node_modules/@types"
]
},
"files": [
"server.ts", "app/**"
],
"exclude": [
"node_modules"
]
}
запускаю процесс командой "ts:build": "tsc server.ts"
"app/**" добавлял уже для решения проблемы, как вы понимаете, не помогло ?


des
05.12.2016
11:22:23
Я VS Code юзал для js, а потом он у меня на второй день просто завис намертво. Я аж расстроился и перешел обратно на саблайм.
Как там, виснет всё ещё?
Саблайм куда стабильнее по-моему.

Дмитрий
05.12.2016
11:23:50
У меня был этот баг, но не встречал уже несколько месяцев

.
05.12.2016
11:37:30
Привет. Я тут установил typescript@next, но atom-typescript все равно жалуется на спреды. Это можно как-то пофиксить?
А, ему же все равно какой я в проект установил, лол
Прописал путь

Google

Vasiliy
05.12.2016
14:06:09
чет включаю allowJs и все рушится нафиг
именно с rxjs беда
[5:03]
ERROR in /blah/node_modules/@reactivex/rxjs/dist/cjs/Rx.d.ts
(130,26): error TS2306: File '/blah/node_modules/@reactivex/rxjs/dist/cjs/Operator.js' is not a module.
ERROR in /blah/node_modules/@reactivex/rxjs/dist/cjs/Rx.d.ts
(131,10): error TS2305: Module '"/blah/node_modules/@reactivex/rxjs/dist/cjs/Observer"' has no exported member 'Observer'.
...
import * as Rx from "@reactivex/rxjs";
не помню видел или нет, либо конвенции/правила наименования всяких штук можно как-то в tslint.config определять
эм, а реально как-то настроить tslint с airbnb правилами? я нашел только вот этот странный гист https://gist.github.com/piotrwitek/f15ad4bf2297ac60d06581f188ee52ff
typescript-eslint-parser у меня не завелся
если у кого-то настроено максимально приближенно к eslint-config-airbnb, можете пошарить конфиг?


.
06.12.2016
12:27:57
Хай
function func(a: Array<Object>, b: Object, c: Array<Object>, d: number) {}
слишком длинный список аргументов получается, можно как-то лучше?

Anton
06.12.2016
12:29:24
Можешь написать Object[]
Можешь разносить по разным строкам
Можешь сделать один аргумент-объект, в котром будет a, b, c, d и вынести это в интерфейс
И еще куча вариантов

.
06.12.2016
12:30:37
Спс

Nikita
06.12.2016
14:22:45
@vkurchatkin я правильно понимаю, что $Shape тупо убирает у type required у всех пропертей?

Vladimir
06.12.2016
14:28:46
ну вроде этого, но я честно говоря точно не знаю

Nikita
06.12.2016
14:33:49
https://flowtype.org/try/#0C4TwDgpgBAwg9gOwGYEsDmUC8UDeAoKKJOOALigGdgAnFBNAGgKgCMBDa8hAVwFsWI1PAF8A3HjyhIUAEoQAjtxTUIAE3jJ0WXM2JlKNOmhHi8SbggDGwFIiiWVbYBA2o0ACjgA3QbVURyOUVlNVctAB8oABIAZQALNkgAHjC0AD4ASnJUnUIVYG5qBFzCIhJyb18UfwA6PSZS1g4Kn2o-CBr2IUIxESA