
Aleh
01.02.2017
10:59:20
вроде как
там только если захардкодить для случаев от 1 до 10, не знаю надо ли кому больше)

Дмитрий
01.02.2017
11:03:26
path типизировать, например

Aleh
01.02.2017
11:03:49
а, path это штука, которая принимает строку и объект?

Google

Дмитрий
01.02.2017
11:04:13
массив строк
Ведёт себя как elvis оператор по соответствующим полям

Aleh
01.02.2017
11:04:54
хм, массив строк мб и можно
хотя не, там тоже придется случаи хардкодить
аргументы ж опять зависимые выходит

Дмитрий
01.02.2017
11:06:54
На один уровень шагнуть можно, я реально типизировал так, что пишешь prop('child') и получаешь корректный тип <T, C?obj: T) => C, реально выводящий тип поля
Но Дальше уже никак там, да
А в рамде половина методов завязана на строках-ключах

Aleh
01.02.2017
11:07:48
можно дальше, если будешь явно указывать количество аргументов
ща тестану

Дмитрий
01.02.2017
11:08:02
Не, у меня не получалось

Aleh
01.02.2017
11:13:52
надо на тип объект ограничений накладывать

Дмитрий
01.02.2017
11:14:34
Он с ограничениями дальше одного уровня не выводит

Google


Aleh
01.02.2017
11:15:35
Он с ограничениями дальше одного уровня не выводит
https://www.typescriptlang.org/play/index.html#src=type%20OneLevel%20%3D%20%7B%0A%20%20%20%20%5Bkey%3A%20string%5D%3A%20any%3B%0A%7D%3B%0Atype%20TwoLevels%20%3D%20%7B%0A%20%20%20%20%5Bkey%3A%20string%5D%3A%20OneLevel%3B%0A%7D%3B%0Adeclare%20function%20path%3CO%20extends%20TwoLevels%2C%20T1%20extends%20keyof%20O%2C%20T2%20extends%20keyof%20O%5BT1%5D%3E(path%3A%20%5BT1%2C%20T2%5D%2C%20o%3A%20O)%3A%20O%5BT1%5D%5BT2%5D%3B%0Adeclare%20function%20path%3CO%20extends%20TwoLevels%2C%20T1%20extends%20keyof%20O%3E(path%3A%20%5BT1%5D%2C%20o%3A%20O)%3A%20O%5BT1%5D%3B%0A%0Aconst%20o%20%3D%20%7B%0A%20%20%20%20a%3A%20%7B%0A%20%20%20%20%20%20%20%20b%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20c%3A%201%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3B%0Aconst%20a%20%3D%20path(%5B%22a%22%5D%2C%20o)%3B%0Aconst%20p%3A%20%5B%22a%22%2C%20%22b%22%5D%20%3D%20%5B%22a%22%2C%20%22b%22%5D%3B%0Aconst%20b%20%3D%20path(p%2C%20o)%3B
можно без p
это я так добавил)
вот так лучше https://www.typescriptlang.org/play/index.html#src=type%20OneLevel%20%3D%20%7B%0A%20%20%20%20%5Bkey%3A%20string%5D%3A%20any%3B%0A%7D%3B%0Atype%20TwoLevels%20%3D%20%7B%0A%20%20%20%20%5Bkey%3A%20string%5D%3A%20OneLevel%3B%0A%7D%3B%0Adeclare%20function%20path%3CO%20extends%20TwoLevels%2C%20T1%20extends%20keyof%20O%2C%20T2%20extends%20keyof%20O%5BT1%5D%3E(path%3A%20%5BT1%2C%20T2%5D%2C%20o%3A%20O)%3A%20O%5BT1%5D%5BT2%5D%3B%0Adeclare%20function%20path%3CO%2C%20T1%20extends%20keyof%20O%3E(path%3A%20%5BT1%5D%2C%20o%3A%20O)%3A%20O%5BT1%5D%3B%0A%0Aconst%20o%20%3D%20%7B%0A%20%20%20%20a%3A%20%7B%0A%20%20%20%20%20%20%20%20b%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20c%3A%201%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3B%0Aconst%20a%20%3D%20path(%5B%22a%22%5D%2C%20o)%3B%0Aconst%20b%20%3D%20path(%5B%22a%22%2C%20%22b%22%5D%2C%20o)%3B


Дмитрий
01.02.2017
11:17:08
Функция-Мюнхаузен

Aleh
01.02.2017
11:25:26
;)

Vasiliy
01.02.2017
11:35:11
т.е. с практической т.з. я вот думаю, что лучше: выкинуть из проекта вообще тайпинги для рамды или подкостыливать везде as any, пока подкостыливаю, но выглядит плохо

Дмитрий
01.02.2017
11:39:17
Перейти на pureScript

Vasiliy
01.02.2017
11:39:47
XD я посматриваю, пусть сначала сорсмапы и psc-package запилят, я слежу за ними

Aleh
01.02.2017
11:40:04
так на purescript так динамично ж тоже нельзя делать

Дмитрий
01.02.2017
11:40:07
Вот там уж точно рамда типизируется))

Aleh
01.02.2017
11:42:27
я плохо знаю purescript, но можешь показать мне аналог path?
"он там не нужен" не принимается

Дмитрий
01.02.2017
11:43:28
Покажу, как буду знать хотя бы просто плохо ?

Aleh
01.02.2017
11:44:02
грубо говоря там будут все теже проблемы с зависимыми аргументами, точно не знаю языки в которых это решено, может в idris там

Дмитрий
01.02.2017
11:44:25
В agda

Aleh
01.02.2017
11:44:37
а, ну может там еще, да

Vasiliy
01.02.2017
11:46:24
я мб не понимаю, там же такие ;же линзы

Google

Vasiliy
01.02.2017
11:46:31
я просто не читал выше сек
purescript-lens
https://github.com/paf31/purescript-lens-simple/blob/master/test/Main.purs
https://github.com/purescript-contrib/purescript-lens/blob/master/test/Main.purs
но я пока тоже ничего не знаю, только тыкаю, в основном учебник и pux

Oleg
01.02.2017
18:35:31
Допустим есть библиотека команд. Команда может выполнять другие команды. Команда выполняется посредством Выполнителя.
Библиотека
Команда1
Команда2
Команда2
Выполнитель(Команда1)
то есть команда использует выполнитель для выполнения других команд
Приложение
результат = Выполнитель(Команда2)
Команды в библиотеке, Выполнитель задается на уровне приложения.
Вопрос - кто как бы организовал такое решение на ts?

andretshurotshka?❄️кде
01.02.2017
18:37:03
функция просто?

Oleg
01.02.2017
18:37:50
ну я не акцентирую функция это или класс
Выполнитель используется в библиотеке, но задается в приложении
буквальные варианты типа гони везде Выполнителя аргументом понятны

Дмитрий
01.02.2017
18:40:58
Если планируете что-то масштабное, то делайте сразу на свёртке графов)
Плюсы — никакой рекурсии
Минусы — угореть придётся по хардкору)

Aleh
01.02.2017
18:44:20
ну, если не хотите чтобы команды знали о выполнителе, то можете сделать какой-то протокол общения с контролирующей рутиной, типа как всякие редакс-саги делают
yield run(anotherCommand);

Дмитрий
01.02.2017
18:44:49
Я скажу больше, сам редакс — это и есть конечный автомат состояний
С командами
И "выполнителями")

Vladimir
01.02.2017
18:45:41
Описанное сильно похоже на алгебраические эффекты

Aleh
01.02.2017
18:45:55
ну да, я про них

Vladimir
01.02.2017
18:47:12
Весьма недурная концепция
Не уверен что это можно нормально типизировать в ТС

Mike
01.02.2017
18:54:21
Ребят, а опубликовать тут тайпскриптовую вакансию, это ок?

Google

Vladimir
01.02.2017
18:54:43
Джобс же есть для этого

Дмитрий
01.02.2017
18:55:13
Стив?

Mike
01.02.2017
18:55:15
Ну там жс

Dmitry
01.02.2017
18:55:49

Vladimir
01.02.2017
18:55:53
Про создавать отдельный канал
Ещё coffeescript jobs

Aleh
01.02.2017
18:56:15

Admin
ERROR: S client not available

Anatoly
01.02.2017
18:56:23
Редакс это не конечный автомат

Mike
01.02.2017
18:56:31
А у мну тайпа без реакта и вообще без дом, но про webgl. Ладно как напишу так запосчу там подробно а тут одной ссылочкой

Anatoly
01.02.2017
18:56:47
В конечном автомате состояния определены заранее и они дискретны

Vladimir
01.02.2017
18:57:32
Ну формально они определены заранее и дискретны

Vadim
02.02.2017
05:38:13
Почему не работает декларейшн мерджинг в данном случае?
export interface Dict<T> {
readonly [name: string]: T;
}
export interface Dict<T, TKey> {
readonly [name: TKey]: T;
}
Возможно ли мерджить декларации с разным числом дженериков?

Mike
02.02.2017
13:15:39
Господа, вопрос. Имея AST тайп скрипта, можно ли назад сгенерировать typescript код?

Паша
02.02.2017
13:43:47
теоретически можно, но он будет однострочный — без комментов, переводов строк и т.д.

Сергей
02.02.2017
13:44:03
в этом плане babel намного лучше, ибо он может нормально отформатироваь всё дело
надо гуглить по поводу ts

Mike
02.02.2017
13:57:14
я хочу пропробовать сконвертировать actionscript ast в typescript ast и вытащить тайповый код из него

Google

Сергей
02.02.2017
14:03:35
я так рубевый код в babel6 ast конвертил

Mike
02.02.2017
14:04:00
и как, доволен результатом?

Сергей
02.02.2017
14:04:37
было весело

Ҫѐҏӗѫӑ
02.02.2017
14:05:48
на гх были проекты конвертации из as в ts, но там старый ts
может быть все равно проще взять их за основу

Mike
02.02.2017
14:06:23
да и проекты по 3 года не апдейтятся. Естественно их изучить потребуется
и может взять за основу

Vasiliy
02.02.2017
14:23:17
хм, такой вопрос, вы пишете свои классы ошибок?
class FooError extends Error

Mike
02.02.2017
14:23:58
да
в моём случае там ещё и форматтер стектрейса под разными браузерами который приводит его к примерно удобоваримому виду

Vasiliy
02.02.2017
14:26:25
понял, я просто щас задумался в каких случаях я это делаю
ну очевидно:
1) когда надо данные какие-то дополнительно хранить
2) как-то мб их форматировать, да
3) всякие вещи типа
public static unsupportedContentType(contentType: string) {
return new HttpClientError({ contentType }, 'Content type is not supported');
}
^ но про это я не уверен)
ну и самое главное забыл: чтобы их ловить и понимать что это и отдельно обрабатывать ex instanceof FooError

Mike
02.02.2017
14:34:21
ну всё правильно и нормально
по поводу генерации кода из ast вот что нашёл https://github.com/Microsoft/TypeScript/pull/11561

Dreamerinnoise
02.02.2017
19:07:52
https://github.com/Microsoft/TypeScript/wiki/Roadmap
Мда, не осилили они генераторы в es5 в 2.2
Перенесли в 2.3

Ҫѐҏӗѫӑ
02.02.2017
19:08:17
охлол

Дмитрий
02.02.2017
19:08:30
Очередная победа "суперсета жс"

Nikita
02.02.2017
21:05:48
?

Aleh
03.02.2017
03:56:34