
Andrey
29.03.2017
18:57:08

Дмитрий
29.03.2017
18:57:27
м?
Сначала функции-генераторы, а потом вжух — и понеслась, и у тебя уже .babelrc.js с кучей разных штук, без которых не очень понятно, как раньше жил ?

Andrey
29.03.2017
18:58:44
А потом:
“Какой же плагин для babel мне установить, чтобы заработал мой код?”

Дмитрий
29.03.2017
18:58:50
Эээ

Google

Дмитрий
29.03.2017
18:59:09
Не очень себе представляю такую ситуацию, конфиг что ли потеряли?)

Aleh
29.03.2017
18:59:23
и package.json

Дмитрий
29.03.2017
18:59:40
Да?

Aleh
29.03.2017
18:59:56
типичная ситуация в мире с системами контроля версий)
но вообще если кому-то гист делаешь

Andrey
29.03.2017
19:00:43

Дмитрий
29.03.2017
19:03:31
Очень тонкая ?
Хотя вот сейчас посмотрел на babelrc — в основном те плагины, про которые я говорил — всё же react-specific, и, возможно, остальным и правда не нужно)

Andrey
29.03.2017
19:05:13


Artur
29.03.2017
19:08:45
имхо, люди вон пишут без типов на жс столько лет и ничего, работает
я думаю можно иногда any поставить, ничего страшного в этом нет
тс нужен, но в меру, и если он в каких-то местах мешает пилить фичи для бизнеса, отнимает кучу времени в плане дрочки на типы и тд, то мб стоит просто поставить any где-то там и идти дальше, все хорошо в меру
когда пилишь пакет/либу/фреймворк и потребители по сути это другие разработчики, тогда мб стоит пое***ся с типами, но когда пилишь какой-то визуальный инструмент для других людей, то им пофиг по сути что там внутри, а для себя всегда можно найти какие-то компромисы в плане типизации (где надо писать, а где нет)
т.е. я вообще это не к тому, что надо ложить на все хер, я больше про то, что дофига перфекционизма это тоже плохо, особенно когда пилишь сугубо простые и прикладные вещи
в clojurescript свое говно, в purescript – свое, везде свое говно, надо трахаться
сорри, я все не читал, я вот не очень понимаю смысл в babel + ts? почему просто тс не оставить?
вот эти плагины типа https://github.com/css-modules/css-modules-require-hook они ведь не очень нужны с вебпаком, все равно собираться придется и все равно даже если тупо для сср, то оч вероятно, что тулчейн нужен будет по-мощнее, чем просто бабель, почему бы сразу вебпаком все не делать
(бтв для типизации цсс модулей есть tcm и плагин для вебпака)
Соглашусь, иногда стоит написать any.
Например, когда пишешь какую-то ядрёную штуку, которая внутри всякие defineProperty использует или high order functions, cyrrying и так далее, которые плохо типизируются typescript, то внутри имплементации такой функции можно воткнуть any. Главное, чтобы публичный интерфейс функции был строгим.
Ну и вообще, перфекционизм надо подавлять, везде. В том числе и в дроче на использование только одной тульзы :)


Дмитрий
29.03.2017
19:12:40
покажи что ли
react-css-modules
syntax-dynamic-import
babel-plugin-lodash
transform-react-stateless-component-name
transform-react-constant-elements

Andrey
29.03.2017
19:15:57

Google

Дмитрий
29.03.2017
19:17:24

Aleh
29.03.2017
19:32:00
constant elements норм
прям реально бустит перфоманс?

Petr
29.03.2017
19:38:54
Я однажды отказался от babel, оставил чистый ts

Kirill
29.03.2017
19:39:02
Приветствую. Иногда требуется сделать асинхронные неблокирующие сайд-эффекты, не оборачивая при этом весь исполняемый контекст в async функцию. Придумал вот такой сахар. Как думаете, нужен такой?

Petr
29.03.2017
19:39:40
Но потом я пошёл дальше и в одном проекте отказался от webpack, собираю бандл целиком на tsc
Оч быстро стартует и всё собирает, watch есть инкрементальный, но нет hot reload

Artur
29.03.2017
19:56:53
На входе es6 modules?
hot reload не использую, ибо не хочется постоянно себя одёргивать типа "а это я сломал, или хот-релоад глючит"?
кмк это должно быть продолжением do expressions:
do async {
await 1;
}

Дмитрий
29.03.2017
19:59:22

Kirill
29.03.2017
19:59:38

Дмитрий
29.03.2017
19:59:48
Когда хот релоад настроен — он не глючит, от слова вообще
Даже на async компонентах

Artur
29.03.2017
20:01:07

andretshurotshka?❄️кде
29.03.2017
20:02:02
лол

Дмитрий
29.03.2017
20:02:04
прям реально бустит перфоманс?
Я сам не замерял, но тут прям внушительная цифра
https://reactjsnews.com/how-to-make-your-react-apps-10x-faster
(забыл упомянуть ещё парный плагин transform-react-inline-elements)

Google

Artur
29.03.2017
20:02:18
Пришлось вырубить

Aleh
29.03.2017
20:03:42

Дмитрий
29.03.2017
20:03:51

Artur
29.03.2017
20:04:07

Aleh
29.03.2017
20:04:27
хот-релоад юзаю только в сторибуке)

Kirill
29.03.2017
20:04:38

Artur
29.03.2017
20:04:48

Aleh
29.03.2017
20:05:13
a().then(b).then(c)

Дмитрий
29.03.2017
20:05:14
Правда, здесь не очень immediate конечно

andretshurotshka?❄️кде
29.03.2017
20:07:22

Kirill
29.03.2017
20:13:37

Aleh
29.03.2017
20:14:26
foo(1).then(() => foo(2)).then(() => foo(3))?

Дмитрий
29.03.2017
20:16:25

Kirill
29.03.2017
20:17:35
Не, пауза не нужна вообще. Я сказал, что делаю именно неблокирующий блок. Просто сахар предложил.

Дмитрий
29.03.2017
20:19:09
Но я там вижу именно паузу)

Kirill
29.03.2017
20:19:25
Где именно?

Google

Kirill
29.03.2017
20:20:46

Aleh
29.03.2017
20:20:56
да ничем
он работает
а твой нет
вроде чето такое как ты предлагаешь было в issue typescript, но естественно не приняли, потому что нет в спеке es

Kirill
29.03.2017
20:21:42

Aleh
29.03.2017
20:21:57
ну твоего сахара нигде нет, я про это)

Kirill
29.03.2017
20:22:03
а)

Admin
ERROR: S client not available

Дмитрий
29.03.2017
20:24:01
Мне в одном месте часто нужен был immediate, в итоге пришёл к такому
export const immediate = <T>(fn: (...args) => T, ...args) =>
Promise
.resolve()
.then(() => fn(...args))

andretshurotshka?❄️кде
29.03.2017
20:25:01
макросы)
Для сахара такого)

Дмитрий
29.03.2017
20:25:46

Kirill
29.03.2017
20:26:01

andretshurotshka?❄️кде
29.03.2017
20:26:04
Нет)

Дмитрий
29.03.2017
20:26:11
sweet js
Если typescript — не отдельный язык, то должно завестись
Как и dynamic import()

Aleh
29.03.2017
20:27:36
))

Дмитрий
29.03.2017
20:33:14
Кстати, я вспомнил, что мне это напоминает

Google

Дмитрий
29.03.2017
20:33:29
Экспериментальная do нотация, только ещё и с await
Я хотел набросать пример в repl бабеля, но, кажется, на данный момент такой финт ломает бабель ?
https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=stage-0%2Cstage-1%2Cstage-2%2Cstage-3&targets=&browsers=&builtIns=false&experimental=false&loose=false&spec=true&code=const%20pause%20%3D%20()%20%3D%3E%20new%20Promise(rs%20%3D%3E%20setTimeout(rs%2C%203e3))%0A%0Aconst%20func%20%3D%20async%20()%20%3D%3E%20%7B%0A%20%20%0A%20%20const%20val%20%3D%20do%20%7B%0A%20%20%20%20let%20c%20%3D%200%0A%20%20%20%20await%20pause()%0A%20%20%20%20c%2B%2B%0A%20%20%7D%0A%0A%7D&playground=true
const func = async () => {
const val = do {
let c = 0
await pause()
c++
}
}


Alexey
30.03.2017
09:14:11
всем привет, есть такая известная проблема когда при разработке библиотеки с peer dependencies (например lodash) подключая библиотеку через npm link в другой проект получаем в итоге дерево:
my-project/
node_modules/
my-lib/ ( simlink! -> ~/mypath/my-lib/)
node_modules/
lodash
lodash
и при этом компилятор TS начинает ругаться собирая проект на Argument of type 'Lodash' is not assignable to parameter of type 'Lodash'
т.к берет их из разных папок и считает что это разные типы
кто-нибудь знает дешевое решение этой проблемы?
в ноде есть флаг https://github.com/nodejs/node/pull/6537
который вроде должен решать эту проблему
но в ts его не прокинуть
пытылся через NODE_PRESERVE_SYMLINKS=1 но не сработало
кажется compilerOptions.paths помогает

Aleh
30.03.2017
09:37:03
ругается просто или на какой-то строке?

Alexey
30.03.2017
09:38:22
во всех местах где ты например пытаешься с my-lib работать которая ожидает тип из peer dependencies
ты ей в функцию передаешь Lodash например

Aleh
30.03.2017
09:38:39
ммм
а зачем ты lodash передаешь о.о

Alexey
30.03.2017
09:38:47
а она ждет Lodash из своей локально node_modules/lodash
да это же пример