
Nikita
22.08.2016
14:23:20
?

Artur
22.08.2016
14:23:43
Поэтому у меня сначала транспилит TS, потом вебпак.
По цепочке изменения хватают.

Google

Nikita
22.08.2016
14:24:12
ужас
я пока только минусы вижу от тс

Artur
22.08.2016
14:32:19
Это минусы нового развивающегося стека
К сожалению мы тут в JS последнее время слишком размахнулись с новыми фичами и не успеваем все освоить или сделать стабильным и удобным. Поэтому, наверное, так важно свой вклад вносить в сообщество.

Ҫѐҏӗѫӑ
22.08.2016
14:39:38
а только nuclide умеет покрытие типами показывать?
или из консоли / в vscode/ webstorm тоже можно?
я про flow сейчас
нам бы старый проект покрыть

Viacheslav
22.08.2016
20:35:09

Vladimir
22.08.2016
20:35:28
flow coverage

Ҫѐҏӗѫӑ
22.08.2016
20:36:08
ок, спс

Vladimir
22.08.2016
20:36:16
Небольшой хэлпер: https://github.com/sim-sys/ss-commons/blob/master/tools/flow-coverage.js
где-то на гитзабе есть что-то более цивильное

Google

Vitaly
23.08.2016
04:11:47
Всем привет! Кто-то использует flow в разработке? Чем лучше/хуже typescript’а?

andretshurotshka?❄️кде
23.08.2016
04:25:13
а вы как тесты запускаете? ts-node или компилируете?

Vladimir
23.08.2016
05:21:03
Хуже - меньше информации, тайпингов

Artur
23.08.2016
07:27:17

Dreamerinnoise
23.08.2016
07:31:03
Кто-нибудь в vscode сталкивался с проблемой eslint?
File ignored because a matching ignore pattern. Use "--no-ignore" to overrride
у меня нет файла с игнор правилами

Alex
23.08.2016
08:34:28
для приложения еще можно предположить что она на сервере типа будет лучше запускаться сбилженное, поэтому компилить
а можно и там ts-node)
в продакшене

Aleh
23.08.2016
08:37:25
у нас в общем-то два варианта запуска, первый - с собственными require-hook(ts -> babel), а второй через компилирование всего, а потом запуск. Когда разрабатываешь и работаешь над одним тестом быстрее запустить с hook, на ci быстрее закомпилить все, а потом запустить

Nikita
23.08.2016
09:48:48
как в flow сделать nullable тип?

Vladimir
23.08.2016
09:49:23
?Type
или Type | null
или Type | null | void

Nikita
23.08.2016
09:49:49
export interface AuthResult {
step: string,
error?: {
tag: string,
message: string,
canTryAgain: boolean
}
}
вот такой тип
с TS на flow решил попробовать
src/types.js:8
8: error?: {
^ object type. This type is incompatible with
12: error: null
^^^^ null. See: src/utils/castAuthResult.js:12
вот так ругается

Google

Vladimir
23.08.2016
09:50:23
opt?: - это не обязательное свойство, но если оно есть, то тип не nullable
нужно либо error: ?{
либо error?: ?{

Nikita
23.08.2016
09:51:13
а почему null | {} не работает?

Vladimir
23.08.2016
09:51:31
можно и так. ? допускает undefined

Nikita
23.08.2016
09:52:05
export interface AuthResultError {
tag: string,
message: string,
canTryAgain: boolean
}
export interface AuthResult {
step: string,
error: AuthResultError | null
}
вот так не работает, а как надо?

Vladimir
23.08.2016
09:53:06
а какой код не работает?

Nikita
23.08.2016
09:53:50
пишет, что нельзя объект и null
src/types.js:14
14: error: AuthResultError | null
^^^^^^^^^^^^^^^ AuthResultError. This type is incompatible with
12: error: null
^^^^ null. See: src/utils/castAuthResult.js:12

Vladimir
23.08.2016
09:55:07
хм, странно!
используй вместо interface type X = {}
interface не особо документированная вещь

Nikita
23.08.2016
09:55:55
хм, ща попробую
еще вопрос. Вот у меня в проекте есть куча разных типов
причем которые расшарены между друг другом. Ну User например. Куда это все сложить, чтобы каждый раз не импортировать

Vladimir
23.08.2016
09:57:58
хм, никогда так не делал
думаю если в lib положить, то так будет работать
в flowconfig есть секция [libs]
там указываешь папки/файлы с либами

Google

Vladimir
23.08.2016
09:59:10
по идее типы в этих файлах глобальны

Nikita
23.08.2016
09:59:30
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVBLAdgFwKYBOUAhgMZ5gCCArjgBYBKeAztTDgKIEFwFgDeqMGBzEA5gC4wzHAWxiANELABbFs3F4pMuVkXLSxLABUCAT0pji2KQCM4cGHiOoAvumz4iZCjXpNWdgFlGTwAB21ZeSVhQh4CKT9GFjZObl4wAB8wLDYYN3QoaixSHAw4LBEWHAAKAEowRNpkwJxg4QI8HGoCSsFhYVCIsAByAEYAJgBmEZiBuN4pXJh84VcAbjcgA
вот воспроизвел

Vladimir
23.08.2016
10:00:02
это либо баг либо фича интрфейсов
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVAXAngBwKZgCCArhgBYBKeAzsTBgKIBOTcTYAvGAN6phgYAhgHMAXGGoYmASwB2wgDR8wAWxrURecZJnyl-AMaDZAFSZZCwwXPEAjOHBh5jqAL7ps+IqUo06GTh5lSTwcbSk5RWU8FjZxEnIqWnpmVnYAHzBZOhg3dChiWQMMaThZARoMAAoASjB4nyT-IP4mPAxiJnLefn4QsLAAcgBGACYAZkH9Xpi08WyYXP5XAG43IA
вот так более канонично
https://github.com/facebook/flow/issues/2167

Nikita
23.08.2016
10:01:46
хм, никогда так не делал
то есть вот у тебя 20 экшн криэйторов, например и каждому нужен тип юзера, каждый раз импортируешь его?

Vladimir
23.08.2016
10:02:24
ага. ну логика та же что и вообще при использовании модулей
и не использовании global

Nikita
23.08.2016
10:04:38
нууу ок)
а какая разница между {foo?: bar} и {foo: ?bar}?

Vladimir
23.08.2016
10:05:44
в первое можно передать {}, но нельзя { foo: null }, во второе наоборот
можно и так сделать { foo?: ?bar }

Nikita
23.08.2016
10:08:17
и еще вопрос. Как заставить игнорить модули без типов?
то есть я его импортирую и хочу чтобы это было any?

Vladimir
23.08.2016
10:08:43
оно так само и работает

Nikita
23.08.2016
10:09:22
неа, я добавляю в игнор этот модуль, оно пишет, что не нашлось

Vladimir
23.08.2016
10:09:43
да, в игноре не должен быть

Nikita
23.08.2016
10:10:00
хм, но он его пытается прочекать

Google

Nikita
23.08.2016
10:10:14
а там скомпиленный бинарник на 2метра, я не хочу чтобы его проверяли)

Ҫѐҏӗѫӑ
23.08.2016
10:10:23
ну он должен чекать и там будет any подефолту

Vladimir
23.08.2016
10:10:34
ну эт да, он его как минимум читает и парсит
но он это сделает один раз

Ҫѐҏӗѫӑ
23.08.2016
10:10:59
flow нужен noImplicitAny

Nikita
23.08.2016
10:11:06
так мне вот не надо чтобы читал и парсил

Ҫѐҏӗѫӑ
23.08.2016
10:11:10
и транспайлер

Nikita
23.08.2016
10:11:17
а можно как-то import foo : any from 'foo';?

Ҫѐҏӗѫӑ
23.08.2016
10:11:59
и репо с дефинишнами
вот эти три условия и я свалю с TS

Nikita
23.08.2016
10:12:27
зачем flow транспайлер?

Ҫѐҏӗѫӑ
23.08.2016
10:12:32
чтобы был

Nikita
23.08.2016
10:12:36
мне нравится в flow что его можно включить, а можно не включать

Ҫѐҏӗѫӑ
23.08.2016
10:12:40
он там есть и так

Nikita
23.08.2016
10:12:44
но он у меня почему-то работает в любом случае

Ҫѐҏӗѫӑ
23.08.2016
10:12:44
но он кастрированный

Nikita
23.08.2016
10:13:08
который типы свои выпиливает?

Ҫѐҏӗѫӑ
23.08.2016
10:13:11
да