Size: a a a

2021 June 25

Я

Я Аляксандар... in ☄️ effector
Что-то какая то сомнительна аргументация. Если я например сделаю createStore<AccountType>() то типы для createStore как раз так прописаны таким обрзом что дефолтное значение нужно передать и оно должно совпадать с типом моего стора. А для Gate.sate получается библиотека сама подсовывает дефолтное значение, да ещё и такое которое не попадает под мой тип.

Выглядит будто это баг и решения может быть два.

1. Либо createGate требует дефолтное значение для этого стора, которое соответствует типу.
2. Либо для стора применяется тип T | null и дефолтным значением является null соответственно.

const G = createGate<User>()
G.state // => User | null

Я жду что TS мне не просто как jsdoc показывает какой я тип где-то прописал, а то что он показывает какого типа данные в это переменной могут реально быть. Если библиотека себе позволяет положить в этот стор данные которые не соответствуют типу указанному мною, то хотелось бы что бы она явно показывала это.
источник

Egor Гуща in ☄️ effector
Так она тебе и покажет
Ты передал тип, вызываешь гейт он тебе скажет о том что ты не передал

createStore по дефолту тебе не проставит null
Укажи явно User|null
источник

Я

Я Аляксандар... in ☄️ effector
То что он покажет на входе если я не передал что-то - это хорошо, значит на входе прописаны типы правильно и все подрядке. Я здесь говорю про проблему в другом месте - для стора показывает тип один, а по факту библиотека подкладывает туда данные другие, не соответствующие типу.
источник

ф

фильтруй мысли... in ☄️ effector
через babel plugin можно
источник

I

InvalidHuman in ☄️ effector
ok sps
источник

I

InvalidHuman in ☄️ effector
ну хотя, для продакшена я могу alias’ы другие сделать просто
источник

Egor Гуща in ☄️ effector
не подкладывает туда другие данные
1) Gate это возможность прокинуть данные из реакта в эффектор
2) Почему объект? потому что объект всегда можно расширить и ничего не сломается
3)  пропсы реакт компонента это объект, а он уже может быть пустым, а именно {}
источник

n⚡

neomad ⚡️ in ☄️ effector
не могу найти useGate хук для реакта в репе на гитхабе, хотел сурсы глянуть
источник

Я

Я Аляксандар... in ☄️ effector
Именно подкладывает туда другие данные. У меня указан один тип, а лежит там (до тех пор пока Gate не примаунчен в реакт) другой тип, несовместимый с тем что я указал.
источник

D🍕

Dmitriy 🍕 in ☄️ effector
источник

Я

Я Аляксандар... in ☄️ effector
Что не позволяет мне видеть что я пишу не typesafe код. TS мне показывает будто из Gate.state я всегда беру AccountType, а на самом деле иногда я беру пустой объект и мой код падает в рантайме
источник

n⚡

neomad ⚡️ in ☄️ effector
спасибо, я думал что в отдельном файле это лежит
источник

Egor Гуща in ☄️ effector
Потому что ты указал тип ему, поэтому он тебе показывает то,что ты передал
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Gate без дефолтного состояния появился раньше других разновидностей, поэтому приходится с этим иметь дело)
нужен корректный тип — указывай необходимый defaultState
источник

IK

Igor Kamyshev in ☄️ effector
Нельзя ли это в мажоре пофиксить?
источник

К

Кирилл in ☄️ effector
присоединюсь к вышесказанному, по-моему тоже должно быть что-то типа Gate.state: Gate.open | Gate.close
источник

IK

Igor Kamyshev in ☄️ effector
Лучше обязательный дефолт стейт как у крейт стор
источник

YL

Yan👀 Lobaty in ☄️ effector
создавая стор ты пишешь дефолтное значение в нем
источник

IK

Igor Kamyshev in ☄️ effector
Я о гейте
источник

YL

Yan👀 Lobaty in ☄️ effector
ага)
источник