
Vladimir
11.10.2016
14:47:47
Он показывает места которые является ошибкой и которые являются нетипизированными одинаково в таком случае
Нужно уметь различать, что есть что

Nikita
11.10.2016
14:56:08
а идногда тупит дико)
if (this.rewind) {
const rewindRect: ClientRect = this.rewind.getBoundingClientRect();
const rewindPosition = (event.clientX - rewindRect.left) / rewindRect.width;
if (this.audio) {
this.audio.currentTime = this.audio.duration * rewindPosition;
}
}

Google

Nikita
11.10.2016
14:57:36
if (this.rewind && this.audio) ему не понятно)

Vladimir
11.10.2016
14:58:11
все понятно!

Aleh
11.10.2016
14:58:16
он ругается на избыточность?

Nikita
11.10.2016
14:58:22
а, и самое дикое. flow теряет контекст подобных проверок внутри коллбэка. типо что происходит вне коллбэка остается вне коллбэка)

Vladimir
11.10.2016
14:58:30
Чаще всего, если кажется что Flow не прав, то он прав
Результат проверок быстро выбрасывается, потому что вызов функций их инвалидирует

Nikita
11.10.2016
14:59:13
как в таком случе он может быть прав?))
if (this.rewind && this.audio) {
const rewindRect: ClientRect = this.rewind.getBoundingClientRect();
const rewindPosition = (event.clientX - rewindRect.left) / rewindRect.width;
this.audio.currentTime = this.audio.duration * rewindPosition;
}
тут он орет на this.audio.currentTime

Vladimir
11.10.2016
14:59:41
getBoundingClientRectможет делать this.audio = null

Nikita
11.10.2016
15:00:16
лол, это как?))

Vladimir
11.10.2016
15:01:52
Всмысле?
Есть функция, неизвестно, что она делает
Она вполне может сделать так, что this.audio станет null

Google

Mike
11.10.2016
15:03:31
интересно, а тайпа не сбросит это?

Vladimir
11.10.2016
15:03:44
Вряд ли
У них другая философия

Nikita
11.10.2016
15:04:01
гм. надо вводить в flow тогда определение константности функции

Vladimir
11.10.2016
15:04:20
Ну в теории, да, и не только
Еще нужно вводить атрибут локальности для параметров функций

Mike
11.10.2016
15:04:56
и константности и чистоты

Vladimir
11.10.2016
15:05:10
ну да

Nikita
11.10.2016
15:05:21
хм

Vladimir
11.10.2016
15:05:51
Например, когда ты используешь коллбэк, флоу не знает, будет он вызван сейчас или позже

Nikita
11.10.2016
15:06:04
const { audio, rewind } = this;
if (audio && rewind) {
const rewindRect: ClientRect = this.rewind.getBoundingClientRect();
const rewindPosition = (event.clientX - rewindRect.left) / rewindRect.width;
this.audio.currentTime = this.audio.duration * rewindPosition;
}
тогда такое должно прокатить?

Vladimir
11.10.2016
15:06:14
Ага

Nikita
11.10.2016
15:06:22
ну, без this внутри

Vladimir
11.10.2016
15:06:28
Ну да

Nikita
11.10.2016
15:07:01

Vladimir
11.10.2016
15:07:13
Всмысле - кончилась?
if (this.x) {
arr.forEach(o => this.x(o));
}
Вот что то такое не будет работать

Nikita
11.10.2016
15:08:12
// @flow
function foo(bar: ?number) {
if (bar) {
setTimeout(() => bar.toFixed(), 100);
}
}

Google

Nikita
11.10.2016
15:08:20
вот такое не работает)

Vladimir
11.10.2016
15:08:40
Ну тут теоретически можно было бы заметить, что никто не меняет bar, да
Это по сути inference const аргумента

Nikita
11.10.2016
15:09:42
function foo(bar: ?number) {
const _bar = bar;
if (_bar) {
setTimeout(() => _bar.toFixed(), 100);
}
}
а такое ок
мб issue открыть

Vladimir
11.10.2016
15:10:13
Где уже обсуждалось что то такое
Еще есть const agruments в конфиге

Nikita
11.10.2016
15:10:57
а с реактом это не важно)
там где такое нужно, берется из this.props
а чего про children говорят в реакте?
вообще константность аргументов прям сильно бы пригодилась реакт-приложениях. редьюсеры те же проверять

Vladimir
11.10.2016
15:57:52
Ты имеешь в виду иммутабельность?

Nikita
11.10.2016
15:59:03
угу, я просто сравниваю это с C++, там это как раз константность. ты можешь указать, что функция const и тогда ей запрещено менять мир. Можешь указать, что аргументы, тогда их нельзя трогать. Можешь даже return-value. В общем красота)

Mike
11.10.2016
16:00:01

Vladimir
11.10.2016
16:04:42
Ну, это нужная тема

Mike
11.10.2016
16:07:18
нужная, но в принципе на передовой современных ЯП там всё не очень пока

Nikita
11.10.2016
16:14:55
мне кажется ее и добавить не так сложно)

Ҫѐҏӗѫӑ
11.10.2016
19:39:20
любой валидный js является валидным ts

Google

Ҫѐҏӗѫӑ
11.10.2016
19:40:29
flow -- не js
и вообще с tsc можно не менять разрешение
и не надо добавлять // @ts ))

Vladimir
11.10.2016
19:41:21
> @chicoxyzzy
любой валидный js является валидным ts
нет

Nikita
11.10.2016
19:41:27
import React from 'react'
не работает в TS
мне этого было почти достаточно)

Ҫѐҏӗѫӑ
11.10.2016
19:41:46
лал

Admin
ERROR: S client not available

Nikita
11.10.2016
19:42:09

Vladimir
11.10.2016
19:43:32
> @chicoxyzzy
и вообще с tsc можно не менять разрешение
И тайп чекать будет?

Ҫѐҏӗѫӑ
11.10.2016
19:45:30

Vladimir
11.10.2016
19:46:00
я спрашиваю - будет или нет

Nikita
11.10.2016
19:46:14

Ҫѐҏӗѫӑ
11.10.2016
19:46:16
ну ты в плейграунде открой что-то и напиши
оно тайпчекает же

Vladimir
11.10.2016
19:46:34
там нет файлов

Ҫѐҏӗѫӑ
11.10.2016
19:46:36

Nikita
11.10.2016
19:46:42
tsc test.js
error TS6054: File 'test.js' has unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts'.

Google

Vladimir
11.10.2016
19:46:46
я спашиваю про файлы

Ҫѐҏӗѫӑ
11.10.2016
19:47:35
https://www.typescriptlang.org/docs/handbook/modules.html
тут есть все нужное про модули (проблемы были еще тогда же, когда бабель от модулей хуесосили)

Mike
11.10.2016
19:47:47
--allowJs

Vladimir
11.10.2016
19:48:08
и он буде тайпчекать js?

Mike
11.10.2016
19:48:17
да

Vladimir
11.10.2016
19:48:23
или просто транспилировать?

Mike
11.10.2016
19:48:28
мне например наоборот неудобно

Ave
11.10.2016
19:48:47
так это чатик про flow или про typescript? развели тут

Mike
11.10.2016
19:49:03
про их любовь друг к другу

Vladimir
11.10.2016
19:49:13
то есть, сразу нужно будет добавить аннотации во все файлы?

Mike
11.10.2016
19:49:31
не, я не добавляю

Nikita
11.10.2016
19:49:31
--allowSyntheticDefaultImports Allow default imports from modules with no default export. This does not affect code emit, just typechecking.

Vladimir
11.10.2016
19:49:44

Nikita
11.10.2016
19:49:47
я так понимаю если потом babel пустить то можно import react from react?

Ҫѐҏӗѫӑ
11.10.2016
19:50:09

Nikita
11.10.2016
19:50:37
tsc test.js --allowJs --outFile _test.js
test.js(1,12): error TS8010: 'types' can only be used in a .ts file.

Ҫѐҏӗѫӑ
11.10.2016
19:50:43

Nikita
11.10.2016
19:50:54
прям все, что вы тут пишите про тс, у меня лично не работает))

Ҫѐҏӗѫӑ
11.10.2016
19:51:00
в tsc посмотрел, нет опций для экстеншнов

Nikita
11.10.2016
19:51:25
а в tsconfig?