Size: a a a

Reatom — стейт-менеджер

2020 April 10

a

artalar in Reatom — стейт-менеджер
У атома есть проверка - T не должен быть undefined, а у тебя в фабрике над типом этой проверки нет - вот и ругается, видимо
источник

a

artalar in Reatom — стейт-менеджер
скинь код плз
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
function atomFactory<T>(initialValue: T) {
 const atom: Atom<[T, number]> = declareAtom([initialValue, 0], on => [])

 map(atom, value => value[0])
}
источник

a

artalar in Reatom — стейт-менеджер
Ilyas Kabirov
function atomFactory<T>(initialValue: T) {
 const atom: Atom<[T, number]> = declareAtom([initialValue, 0], on => [])

 map(atom, value => value[0])
}
В общем нужно более явно указать типы
function atomFactory<T>(initialValue: Exclude<T, undefined>) {
 const atom: Atom<[Exclude<T, undefined>, number]> = declareAtom([initialValue, 0], on => [])

 map(atom, value => value[0])
}
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
а нельзя это как-то в сигнатуре функции указать?
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
чтобы undefined нельзя было передать
источник

a

artalar in Reatom — стейт-менеджер
Ну вот ты таким образом и указываешь. Мб это можно лаканичней записать, но я не знаю(
источник

NS

Nikita Stenin in Reatom — стейт-менеджер
Ilyas Kabirov
а нельзя это как-то в сигнатуре функции указать?
Вот так можно попробовать
function atomFactory<T>(initialValue: NonNullable<T>) {
 // ..
}
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
не, надо указать что T не может быть undefined
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
все равно оно не исключает undefined
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
странно что даже так не работает
источник

NS

Nikita Stenin in Reatom — стейт-менеджер
Вот так должно работать:
type NonUndefined<T> = T extends undefined ? never : T

function atomFactory<T>(initialValue: NonUndefined<T>) {
 const atom: Atom<[NonUndefined<T>, number]> = declareAtom(
   [initialValue, 0],
   on => [],
 )

 map(atom, value => value[0])
}
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
короче у TS поддержка ограниченных дженериков через жопу
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
всем спасибо за участие :)
источник
2020 April 12

a

artalar in Reatom — стейт-менеджер
источник

a

artalar in Reatom — стейт-менеджер
Там на TS код
источник

a

artalar in Reatom — стейт-менеджер
Кстати, я там только одну фичу переписал на реатом, никто не хочет добить остальной код? 🤔 Вышел бы хороший пример в доку
источник

Л

Лс in Reatom — стейт-менеджер
Ivan Niemtinov
Подкупает. Но для него прикольно бы ещё написать (или найти, если они есть) решения как в MobX -  чтобы сделал класс с декораторами @action, переменными и методами, которые изменяешь и вызываешь - а атомы и экшены создаются сами. Вот тогда и MobX можно будет выбросить. И это будет лучше MobX, потому что есть Redux DevTools, где всю кухню можно увидеть
не говорю за решение, но за 2 часа на коленке наклепал. Вопрос здесь в производительности  отслеживания всех таких шутк, собсна поэтому я здесь
источник