@typescript_ru

Страница 89 из 669
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. В общем красота)

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

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

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

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
любой валидный js является валидным ts
ну вот тебе пример, когда это не так) сильно не так)

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

Ҫѐҏӗѫӑ
11.10.2016
19:45:30
ну вот тебе пример, когда это не так) сильно не так)
первый попавшийся в гугле пример https://github.com/jaysoo/todomvc-redux-react-typescript/blob/master/client/main.tsx

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

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

оно тайпчекает же

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

Ҫѐҏӗѫӑ
11.10.2016
19:46:36
import * as React from 'react'; !== import React from 'react'
добро пожаловать в ченжлоги тогда

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 тут есть все нужное про модули (проблемы были еще тогда же, когда бабель от модулей хуесосили)

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
--allowJs
это не то

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.

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

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

Nikita
11.10.2016
19:51:25
а в tsconfig?

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