
Aleh
02.01.2017
12:24:39
Ну мы прописываем в Props компонента как необязательные

Vasiliy
02.01.2017
12:47:52
мм, я делаю вот так:
interface FooOwnProps
interface FooConnectedState
interface FooConnectedActions
type FooProps = FooOwnProps & FooConnectedState & FooConnectedActions
connect<
FooConnectedState,
FooConnectedActions,
FooOwnProps
>(selector, actions)(Foo)
где первые 3 интерфейса ничего не "экстендят" (т.е. из друг друга), ну + именование интерфейсов кому как удобнее
многовато типов, конечно, получается, да и выглядит все это громоздко, ничего лучше пока не придумал

Aleh
02.01.2017
12:59:29
Вот бы rest добавили (

Google

Vasiliy
02.01.2017
13:00:45
rest это вот про ту штуку по типу как вариадические шаблоны в плюсах?
https://github.com/Microsoft/TypeScript/issues/5453 вот это?

Aleh
02.01.2017
13:05:58
Не

Ҫѐҏӗѫӑ
02.01.2017
13:27:49
rest для типов должен быть. его вместе с обжект рестом добавляли

Vadim
02.01.2017
13:44:46

Aleh
02.01.2017
13:45:18

Ҫѐҏӗѫӑ
02.01.2017
13:45:30
мудаки(

Aleh
02.01.2017
13:45:46
Issue открыт по rest types еще
Частичная имплементация это object rest

Vasiliy
02.01.2017
13:47:16

Aleh
02.01.2017
13:47:56
https://github.com/Microsoft/TypeScript/issues/10727

Vasiliy
02.01.2017
13:50:10

Vadim
02.01.2017
13:50:24
Так решения не нашли там?

Google

Vasiliy
02.01.2017
13:52:53
неа, я так понял, что rest types поможет решить проблему)

Aleh
02.01.2017
14:32:13
Вы strictNull юзаете?

Ҫѐҏӗѫӑ
02.01.2017
14:34:10
null не нужен
это надо подефолту включить вообще

Aleh
02.01.2017
14:35:41
Это да
Если юзаете, тогда поставьте тип компонента, который возвращает connect, а в компоненте в Props явно все пропишите, все что он юзает
Тип компонента, который возвращает connect = тип без dispatch, state и action creators
Но для тех кто не юзал, переход может быть сложноват)

Vadim
03.01.2017
12:14:08
Люди! Как опционально добавлять аттрибуты jsx-компонентам в то время, как в tsconfig выставлено "strictNullChecks": true?
А то, если я пытаюсь делать это через spread attribute, то получаю сообщения типа "Type 'null' is not assignable to type 'number | undefined'"
Короче пример: компонент имеет необязательный параметр. В качестве этого параметра я передаю ему результат функции, которая возвращает либо результат, либо null. Так вот, я хочу что б если null, то аттрибут вообще не добавлялся.

Aleh
03.01.2017
12:18:44
param: number | null

Vadim
03.01.2017
12:19:33
Ну то-есть, вместо просто указания того, что параметр необязательный, нужно явно указывать что он еще и может быть null?
то-есть, недостаточно указать param?: number

Aleh
03.01.2017
12:19:59
undefined и null не одно и тоже

Vadim
03.01.2017
12:20:58
Это понятно. Но я хотел узнать, можно ли сделать так, что б в случае если значение null, то аттрибут вообще не добавлялся?
Иначе придется для всех необязательных параметров ВЕЗДЕ прописывать "param? Type | null", что очень неизящно

Aleh
03.01.2017
12:22:14
а зачем вы null выставляете?
выставляйте undefined
ну а так да, если бы вы захотел в случае пустоты выставлять пустую строку. то везде бы пришлось проставить Type | ""

Google

Vadim
03.01.2017
12:25:20
Ок, пропишу что б все такие "проблемные" методы, возвращали undefined вместо null

draft
03.01.2017
12:48:52
У тебя пол всей видимости стоит strictnull. Тебе нужно обязательно инициализировать пропы дефолтными значениями вместо налл или андефайнд
Весь смысл strictnull в том чтобы исключить null reference

Aleksey
03.01.2017
16:02:26
Всем привет, кто-нибудь использует Flow на клиенте, есть какие-нибудь хорошие примеры использование? Начал писать проект React + Redux с Flow, не нашел особых преимуществ кроме упращения propTypes

Aleh
03.01.2017
16:03:12
а типизированный state в reducer?
типизированные экшены
https://github.com/DefinitelyTyped/DefinitelyTyped/issues/13233 теперь в @types все то, что в мастере и нет больше ветки types-2.0 + принимают в мастер для ts2.1

Aleksey
04.01.2017
12:50:49
Ребят, есть кто?

Aleh
04.01.2017
12:51:02
есть

Aleksey
04.01.2017
12:51:45
Как избежать Method cannot be called on possibly undefined value?
Переменная типа ?string, далее проверяю if (someVar !== null) { ... }, flowtype выдает ошибку.
Как быть?

Aleh
04.01.2017
12:52:03
а почему ты на null проверяешь?

Aleksey
04.01.2017
12:52:25
Потому что у меня someVar может быть строкой, а может null.

Aleh
04.01.2017
12:52:32
или undefined?)

Aleksey
04.01.2017
12:52:39
И чтобы не вызвать у someVar.split(...) когда null проверяю.
Только null.
В документации не могу найти как правильно.

Aleh
04.01.2017
12:53:43
Только null.
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVMCmAXMUBcYA-AM7YBOAlgHYDmA3KlGALxgCu1AJplDZl0bM21djBhDWYAETT6QA
Только null.
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVMCmAXMUBcYAztgE4CWAdgOZgA+YlArjDANypRgC8YTlAE0xQqmARy69mrCTzAAieWyA

Aleksey
04.01.2017
12:57:58
Понятно, в песочнице все ок, в коде не ок.

Google

Aleksey
04.01.2017
12:58:13
Он думает что метод возвращает undefined.
@mkusher Спасибо, разберусь

Aleh
04.01.2017
13:00:13
@mkusher Спасибо, разберусь
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVMCmAXMUBcYA-AM7YBOAlgHYDmA3KlGALxgCu1AJplDZl0bM21djBhDWYAETTGTTgGNslONTxQAFAWJkqdAJRgA3qjBhKzbWACELEWJhHT58+Rzty6qADoSABxhKbE1ZA0ZzAF9UaIVqZVVvKC0dPRpaMAAfMFFxZzMLK2Y7BzyTArcPLzw-QODQ6XCC6MigA

Aleksey
04.01.2017
13:00:38
А деструктуризация ок работает, да? Читал в ченджлогах что ок.
У меня на самом верхнем уровне скорей всего накосячено, пытаюсь правильно типизировать DI, пока не очень :)

Aleh
04.01.2017
13:01:47
а что за DI?

Admin
ERROR: S client not available

Aleksey
04.01.2017
13:02:18
bottlejs + своя асинхронная динамическая постинициализация модулей.
В принципе можно bottlejs попробовать выкинуть и сделать свое.

Aleh
04.01.2017
13:03:56
ага, понятно\

Aleksey
04.01.2017
13:19:25
И еще, как быть с объектами которые могут содержать только N определенных ключей со своими значениями? Если интерфейсом то он ругается на access of computed property/element. Indexable signature not found in. (this.deps[name].init(data)).
Обращаться через точку я не могу. Есть решение? Или только омитить эту ситуацию?

Yuri
04.01.2017
13:34:03
есть вопрос
вот есть модуль (который легче скопировать если честно)
https://github.com/then/is-promise/blob/master/index.js
https://www.npmjs.com/package/@types/is-promise
я его поставил и тайпинги тоже
когда я в проекте делаю
import isPromise from 'is-promise' мне оно говорит
Module '".../node_modules/@types/is-promise/index"' has no default export

Anatoly
04.01.2017
13:35:43
import { isPromise } from 'is-promise'

Yuri
04.01.2017
13:35:46
если я умный такой и сделаю
import {isPromise} from 'is-promise'
то оно говорит что
error TS2497: Module '".../node_modules/@types/is-promise/index"' resolves to a non-module entity and cannot be imported using this construct.

Ҫѐҏӗѫӑ
04.01.2017
13:36:52
а import * as isPromise from 'is-promise'?

Yuri
04.01.2017
13:37:03
мухаха
тоже самое что последнее

Google

Yuri
04.01.2017
13:37:36
думаешь в партии дураки сидят?

Ҫѐҏӗѫӑ
04.01.2017
13:38:04
ну надо смотреть модуль, а мне лень(

Yuri
04.01.2017
13:38:47
там три строчки
и в тайпингах тоже

Anatoly
04.01.2017
13:39:09
И мне. Может import поглубже сделать?

Ҫѐҏӗѫӑ
04.01.2017
13:39:10
ну так понятно, что можно проверять просто
'then' in x && typeof x.then === 'function'

Yuri
04.01.2017
13:40:36
const isPromise = require('is-promise') работает при этом

Anatoly
04.01.2017
13:41:13
Копни поглубже. import {isPromise} from '../blah/blah/is-promise'

Yuri
04.01.2017
13:43:19
да ну видит же оно файл

Aleh
04.01.2017
13:43:58
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/is-promise/index.d.ts#L6 брр, ну короче * as isPromise должно работать
либо syntaticDefault

Yuri
04.01.2017
13:50:18
что?

Aleh
04.01.2017
13:51:56

Yuri
04.01.2017
13:52:03
нет
в смысле может и должно
но нет
а что там должно быть?