@typescript_ru

Страница 658 из 669
Олександр
15.06.2018
12:33:06
Да, будет. Но проблемы у тебя не в этом )
я знаю) Но это уже другой топик, тут просто мой неудачный пример

Дмитрий
15.06.2018
12:33:32
Да, будет. Но проблемы у тебя не в этом )
Это не делает подобное поведение менее проблемным)

Artur
15.06.2018
12:34:23
Ну, если классы будут отличаться по структуре, то данное поведение будет доставлять чуть меньше проблем

Google
kana
15.06.2018
12:34:45
хаскель - добавим ньютайпы, чтобы различать значения одного типа тс - давайте считать два значения одной структуры одного типа

Олександр
15.06.2018
12:35:43
Да, будет. Но проблемы у тебя не в этом )
https://github.com/Vincit/objection.js/blob/master/examples/express-ts/src/models/Animal.ts Ну вот так автор решает это, мне нравится) *знаю что уже все, структуры разные, это уже не к топику*

Artur
15.06.2018
12:36:19
Не более одно раза на приложение, потом начнут совпадать
type North = { readonly type: unique symbol; } type South = { readonly type: unique symbol; } type East = { readonly type: unique symbol; } type West = { readonly type: unique symbol; } type Direction = North | South | East | West

Олександр
15.06.2018
12:36:21
вполне симпатишно

Artur
15.06.2018
12:36:26
вот так выкрутиться можно

kana
15.06.2018
12:37:25
а термы какие?

Artur
15.06.2018
12:37:40
а термы какие?
о чём речь?

kana
15.06.2018
12:37:47
ну значения

подходящие под этот тип

Дмитрий
15.06.2018
12:38:16
type North = { readonly type: unique symbol; } type South = { readonly type: unique symbol; } type East = { readonly type: unique symbol; } type West = { readonly type: unique symbol; } type Direction = North | South | East | West
Не, через типы это иной кейс) Через типы понятное дело что вот так можно, классы просто снимают бойлерплейт данного приема, и на шаг ближе к нормальной алгебраической сумме типов

Google
Дмитрий
15.06.2018
12:39:25
То есть это даже не выкрутиться, это типа и есть изначальное решение, которое упрощается подходом на основе номинальности

Artur
15.06.2018
12:39:35
ну значения
Это хороший вопрос

Олександр
15.06.2018
12:39:46
А если выкинуть из TS все то, что есть во Flow, что останется? Их вообще можно сравнивать?

Artur
15.06.2018
12:40:14
conditional types как миниму

Дмитрий
15.06.2018
12:40:22
Это сахар

Artur
15.06.2018
12:41:12
Это сахар
И даже infer дл return type?

Дмитрий
15.06.2018
12:41:47
в флоу не нужен infer для return type)

В флоу есть $Call для того чтобы получать это непосредственно

Насчёт conditional types вот у меня конкретный кейс

Олександр
15.06.2018
12:44:27
эти $Call вообще заставляют меня задуматся об чистом js ;)

Дмитрий
15.06.2018
12:46:12
https://github.com/zerobias/effector/blob/master/packages/effector/index.js.flow#L112 этот тип разворачивает контейнер Store и оставляет его дженерик, но если это не Store то тип возвращается как есть

kana
15.06.2018
12:47:53
(госпади как же тяжело читать код без отступов, просто нифига не понимаю, где там куда вложенно)

Дмитрий
15.06.2018
12:49:55
const foo = createStore(0) const bar = createStore('bar') const baz = merge({foo, bar, kek: 0}) Тип baz будет Store<{ foo: number, bar: string, kek: number, }>

Тип foo соответственно Store<number>, который был развернут по условию)

Воот. Собственно от condition types хотелось бы тоже ожидать чего то хотя бы подобного

Раз уж замутили для этого аж отдельный синтаксис

Artur
15.06.2018
12:53:40
Раз уж замутили для этого аж отдельный синтаксис
а явную вариантность всё ещё не хотят

потому что cryptic

Google
Дмитрий
15.06.2018
12:54:03
Ппц))

Олександр
15.06.2018
13:12:13
https://youtu.be/etKOc80-cw0?t=42m5s

интересная реализация

TS тупит жестко, а flow подсказывает там, где бы я даже не ожидал его увидеть

https://reasonml.github.io/docs/en/if-else.html

а это еще интересней

Дмитрий
15.06.2018
13:17:01
Да, я к этому на самом деле и клонил

Номинальная типизация — мост между жс и sum type из ризона

Vladimir
15.06.2018
13:18:40
Как они связаны?

Дмитрий
15.06.2018
13:18:47
class A {} class B {} type AB = A | B

Всё тебе отдельно надо пояснять))

Vladimir
15.06.2018
13:19:29
Только это делается обычно через тэги, а не классы

Дмитрий
15.06.2018
13:19:39
Обычно да

Максим
15.06.2018
13:20:11
есть какие-то вменяемые реализации стэйт машины на ts?? чтоб с колбэками и сохранением-восстановлением состояния?

Дмитрий
15.06.2018
13:20:24
Обычно да
Следующий шаг — заметить что это равносильно но быстрее описывается через классы

Vladimir
15.06.2018
13:20:58
Не знаю, чем это быстрее

Дмитрий
15.06.2018
13:21:05
Чем тегами

Vladimir
15.06.2018
13:21:15
Это не быстрее, это так же

Дмитрий
15.06.2018
13:21:42
class A {} class B {} type AB = A | B
Давай на конкретном примере)

Vladimir
15.06.2018
13:21:56
Давай пример

Google
Дмитрий
15.06.2018
13:22:31
class A {} class B {} type AB = A | B

Всё тебе отдельно надо пояснять))

Vladimir
15.06.2018
13:22:55
type AB = | { t: 'A' } | { t: 'B'}

Дмитрий
15.06.2018
13:23:31
У меня если что готовые конструкторы

Здесь я вижу только декларацию

Vladimir
15.06.2018
13:24:46
Нет у тебя как раз конструкторов

Их еще отдельно написать придется

Дмитрий
15.06.2018
13:25:16
new A даёт новое значение типа A

Vladimir
15.06.2018
13:25:38
Ок, new A() против { t: 'A' }

Дмитрий
15.06.2018
13:26:24
против const a = () => ({ t: 'A' })

Vladimir
15.06.2018
13:26:49
Зачем?

Дмитрий
15.06.2018
13:27:09
Сорян, одного тайп левела маловато

Vladimir
15.06.2018
13:27:25
Если тебе нужна такая функция, то в таком случае и с классми нужно будет () => new A

Дмитрий
15.06.2018
13:27:41
Нет, зачем? Конструктор уже есть

Vladimir
15.06.2018
13:28:31
Потому что писать new A ничем не лучше, чем писать { t: 'A' }

Дмитрий
15.06.2018
13:30:02
Это называется буквоедство вот сейчас тут упираться и утверждать что не видишь никакой разницы

Я понял твою позицию, меня подобная уравниловка не устраивает

Vladimir
15.06.2018
13:30:39
1. На практике я не вижу разницы 2. Причем здесь ризон? Там как раз нет конструкторов

Дмитрий
15.06.2018
13:30:48
Начинаешь понимать

Олександр
15.06.2018
14:16:25
Ребят, а в какой среде разработки пишете на flow? В вебсторме у меня какая-то дичь происходит:

Google
Олександр
15.06.2018
14:16:26


подхватывает мою писанину очееень долго, по три секунды boolean ищет

тоже самое и с ошибками, мега слоупочно

это я что-то криво настроил, или это просто криво реализован syntax highlight и прочее в webstorm'е?

George
15.06.2018
14:20:07
export function fun<T extends {new(...args:any[]):{}}>(target: T) { return class extends target { newMethod(): SomeType { return SomeTypeConstructor<T>(this); }; }; } - кто знает, почему this is not assignable to T?

Vladislav
15.06.2018
14:28:51
инфраструктура у него говно)

John
15.06.2018
14:30:39
просто шторм шибко умный, мейби лучше попробовать vscode?

по крайней мере в последних версиях с тайпскриптом там оке доке)

Vladislav
15.06.2018
14:31:28
с тайпскриптом но не с флоу)

John
15.06.2018
14:31:39
ну да)

Олександр
15.06.2018
14:35:27
просто шторм шибко умный, мейби лучше попробовать vscode?
не нужен тайпскрипт, хочу флоу) Не понравится - подумаю, но мне больше флоу вкатил) А про вс - я паталогически не переношоу говнопродукты майков

Дмитрий
15.06.2018
14:35:38
Ребят, а в какой среде разработки пишете на flow? В вебсторме у меня какая-то дичь происходит:
vs code + lsp норм, шторм тут сильно отстаёт Все дальнейшие вопросы лучше в чат по флоу https://t.me/flowtype_ru

Олександр
15.06.2018
14:35:46
в ВСке писал c++ буквально 5 минут, а наебался на часы

John
15.06.2018
14:43:25
не нужен тайпскрипт, хочу флоу) Не понравится - подумаю, но мне больше флоу вкатил) А про вс - я паталогически не переношоу говнопродукты майков
вскод кстати исключение) сам к нему подходил скептически, особенно после общения с вижуал студией образца 2008 года

Алексей
15.06.2018
14:43:48
vs != vscode

John
15.06.2018
14:44:27
да, просто там они экплуатируют бренды майкрософта, вижуал студия, интеллисенс

Алексей
15.06.2018
14:44:37
они вообще зря назвали его vscode, сразу негативные ассоциации с vs

John
15.06.2018
14:44:38
и всякое уг, хотя ничего общего с этим всем вот нету

дада

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