@typescript_ru

Страница 532 из 669
Дмитрий
08.03.2018
20:12:25
Для меня невозможность подписаться на эмит события это первое препятствие на пути к человеческой декларативной записи

Так как подписываться можно вдалеке от места использования

Дмитрий
08.03.2018
20:14:20
То есть подписки в редьюсерах и эпиках не хватает?

Дмитрий
08.03.2018
20:14:28
В частности, я не упомянул, но эффекты (делегаты асинхронных функций) никогда не падают в throw если ты сам не попросишь, можно просто вызывать функцию как обычно, а все падения этой функции перехватывать в отдельном модуле, при желании

Google
Дмитрий
08.03.2018
20:15:10
watch — это просто ещё один шаблон, который мне надоело каждый раз писать самому) Это враппер, превращающий эпик в функцию

Дмитрий
08.03.2018
20:15:18
Ты не беспокоишься, что в какой-то момент можешь потерять контроль над тем, кто на кого подписан?

Дмитрий
08.03.2018
20:19:38
Просто замена select(action, actions$) ?
const watch = (event, handler) => event.epic(data$ => data$ .map(handler) .chain(e => e.then ? fromPromise(e) : of(e))

Плюсом у меня можно вообще ничего не возвращать, эпикам и ватчам будет пофигу, будет валидный экшн — задиспатчат в стор, не будет — не надо

Плюс все эпики больше не привязаны к одному combineEpic объекту, ведущему в стор, а расположены там где и должны быть — рядом с кодом который его использует

Попробуй объявить с помощью redux-most эпик в папке с компонентом

(спойлер — не выйдет, будешь волочить все эпики до стора лично)

Дмитрий
08.03.2018
20:23:29
Попробуй объявить с помощью redux-most эпик в папке с компонентом
Пока не было таких кейсов Я подумаю над этим подходом, когда возникнет потребность

Спасибо

Хз, я стараюсь делать максимально проще всё

Дмитрий
08.03.2018
20:24:14
Пока не было таких кейсов Я подумаю над этим подходом, когда возникнет потребность
Это так не работает) Затруднительно ощутить потребность в том что не пробовал)

Google
Дмитрий
08.03.2018
20:25:02
Хз, я стараюсь делать максимально проще всё
Весь ui состоит из кейсов в которых нет "проще" изначально

Дмитрий
08.03.2018
20:25:21
Это так не работает) Затруднительно ощутить потребность в том что не пробовал)
Прежде, чем пробовать что-то неочевидное, желательно испытать в этом потребность. Иначе это хайп-поезд

Дмитрий
08.03.2018
20:25:28
У тебя просто как факт в исходных данных находится тип данных протяжённый во времени

Дмитрий
08.03.2018
20:26:12
Ввод текста, вывод текста, поиск к подгрузкой, параллельное выполнение действий, оповещения

Блин, весь ui — это делегаты

У нас Events в DOM модели, у нас Events в ядре node.js — весь жс это не прокидыватели пропсов, а обработчики событий

Дмитрий
08.03.2018
20:27:14
Кто ж спорит

Дмитрий
08.03.2018
20:27:51
Дмитрий
08.03.2018
20:28:52
Меня беспокоит, что с watch становится слишком много взаимосвязей, и в какой-то момент можно перестать понимать, что происходит

Но это нужно пробовать на практике, я понимаю

andretshurotshka?❄️кде
08.03.2018
20:29:40
а с эпиками нет?

Дмитрий
08.03.2018
20:30:48
Все абстракции здесь сопоставляются со стандартными функциями и объектами 1 к 1, поэтому бардак в watch означает просто плохой код

★nton
08.03.2018
23:31:23
ПРивет, подскажите как сказать компилятору игнорировать ошибку?

которая от ts не от ts-lint

Morsik
08.03.2018
23:31:49
// @ts-ignore

★nton
08.03.2018
23:32:19
// @ts-ignore
сверхчеловек

Google
★nton
08.03.2018
23:32:28
спасибо

n06rn
09.03.2018
03:41:07
Привет. Что можно сделать с ошибкой, когда переменная может быть одной из глубоко вложенных структур с отличающимися полями? И хоть перед получением переменной я проверяю на наличие, тайпскрипт все-равно ругается: https://www.typescriptlang.org/play/index.html#src=interface%20IFoo%20%7B%0D%0A%20%20%20%20obj%3A%20(%7B%0D%0A%20%20%20%20a%3A%20string%2C%0D%0A%20%20%20%20b%3A%20number%0D%0A%7D%20%7C%20%7B%0D%0A%20%20%20%20a%3A%20string%2C%0D%0A%20%20%20%20b%3A%20number%2C%0D%0A%20%20%20%20c%3A%20boolean%0D%0A%7D%20%7C%20null)%0D%0A%7D%3B%0D%0A%0D%0Afunction%20handler(data%3A%20IFoo)%20%7B%0D%0A%20%20%20%20if%20(data.obj.c)%20%7B%0D%0A%20%20%20%20%20%20%20%20console.log('c%20is%20'%2C%20data.obj.c)%3B%0D%0A%20%20%20%20%7D%0D%0A%7D

n06rn
09.03.2018
07:00:57
Ну, вообще, вот этот твой пример можно свести к { a: string; b: number; c?: boolean }.
к сожалению это не мной написанные типы, а сгенерированные при помощи https://github.com/apollographql/apollo-codegen

n06rn
09.03.2018
07:20:34
Как видно, компилятор эту проверку понимает и даже правильно выводит тип внутри защищённого блока.
ух) Вот это вообще круто, да) Я на самом деле тоже пробовал такую конструкцию, но проверял невнимательно, а просто c in data.obj

Спасибо!

Friedrich
09.03.2018
07:21:10
?

Artur
09.03.2018
15:24:17
https://new.pikabu.ru/story/chuzhoy_kod_5762938

Buka
09.03.2018
15:25:04
Что за фрибиткоин у вас в рекламе?

Еще и там где клавп

Andrey
09.03.2018
16:36:31
Act говененький
какой подход не говененький? effector?

Сергей
09.03.2018
16:45:04
какой подход не говененький? effector?
Типа того redux-symbiote для тех кто хочет что-то проще effector, но без кучи бойлерплейта

Andrey
09.03.2018
16:51:21
Типа того redux-symbiote для тех кто хочет что-то проще effector, но без кучи бойлерплейта
в твоем подходе, ты по сути пошел дальше и упростил еще экшены, теперь они генерируются и выкинул множество не нужного у act

Andrey
09.03.2018
17:00:15
Именно
Но, в таком подходе есть и проблемы. К примеру, нам нужно в нескольких редьюсерах подписаться на один экшен. В твоей реализации это будет не совсем явно

Andrey
09.03.2018
17:07:43
Один экшн на кучу редюсеров это очень не явно и порождает ошибки
так то да, но есть кейсы, к примеру когда пользователь модет быть авторизованным/не авторизованным. И при разлогине нужно очистить персональные данные

Google
kana
09.03.2018
17:07:57
и тем не менее в идеале экшоны не должны быть привязаны к редьюсерам вообще, для этого это разделение и сделано

Timur
09.03.2018
17:13:00
Чят, помогите, плез. Въезжаю в тс, не могу понять моменты некоторые. Вот я юзаю node-redis, например. У меня есть объект, у которого есть свойство redis, которому я присваиваю require('redis'). Как мне этому свойству указать тип, у которого есть, допустим, все экспорты, которые есть у модуля redis? Получаю ошибку error TS2709: Cannot use namespace 'redis' as a type.

Friedrich
10.03.2018
03:52:36
Что за фрибиткоин у вас в рекламе?
Чуваки, кто тут админ, давайте поубиваем всех ботов? @vkurchatkin @izatop

Тов. админы, уберите спам, пожалуйста! ↑

Alexander
10.03.2018
11:57:45
Тов. админы, уберите спам, пожалуйста! ↑
Блин тут вообще мертвяк какой то))) никто ничего не обсуждает, даже спам боты наверное себя как то не ловко чувствуют когда постят сюда;)

Дмитрий
10.03.2018
11:58:58
Скажи кодовую фразу "геттеры не нужны", увидишь как обсуждают)

Andrey
10.03.2018
12:00:32
Скажи кодовую фразу "геттеры не нужны", увидишь как обсуждают)
Как ни странно - нужны) Геттерами можно обозначать computed properties во вью.

Friedrich
10.03.2018
12:03:03
Тимофей
10.03.2018
12:07:43
Флоу лучше!

??‮???∞?
10.03.2018
12:08:36
Слишком толсто (всё так)

Artur
10.03.2018
12:08:48
Просто кто-то пару раз нарвался на геттер с сайдэффектом и теперь вопит что "геттеры не нужны совсем!"

??‮???∞?
10.03.2018
12:09:00
строгая типизация нинужна

Saphire
10.03.2018
12:09:46
Hmm

Что за бот тут поселился?

Friedrich
10.03.2018
12:38:16
Что за бот тут поселился?
Ты про сообщение внизу чата?

Google
Saphire
10.03.2018
12:39:44
Yup

Friedrich
10.03.2018
12:41:24
Админы не хотят его убрать :(

В смысле, это спамер, но до них пока не удалось донести методику избавления.

Евгений
10.03.2018
16:46:04
А есть ли разница на писать вложеный .subscribe(..=> ...subscribe()) или последовательно .subscribe(..=>) ; subscribe(..=>) ?

в двух случая ,будут ли операции синхроны?

Олег
10.03.2018
16:55:45
это плохо

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