Size: a a a

2021 March 24

AR

Alexey Raspopov in Frontend UA
в идеале, единственных два места где пользователь пишет типы это сигнатура query и Resource<Data> в сигнатуре кастомного квери хука
источник

AV

Anton Verinov in Frontend UA
Alexey Raspopov
в идеале, единственных два места где пользователь пишет типы это сигнатура query и Resource<Data> в сигнатуре кастомного квери хука
источник

AR

Alexey Raspopov in Frontend UA
у меня была мысль сделать позиционные аргументы без массива, но идея в том, чтобы сигнатура была похожа на useMemo/useEffect
источник

AR

Alexey Raspopov in Frontend UA
есть например useResourceFactory(queryFn, […deps]), чтобы делать фетчинг без создания ресурс кеша
источник

AR

Alexey Raspopov in Frontend UA
Anton Verinov
(по умолчанию, ['sdf', 1] будет типа (string | number)[] ¯\_(ツ)_/¯ )
может здесь есть возможность как-то указать что это не просто массив, а, хз, тупл?
источник

AV

Anton Verinov in Frontend UA
А типы useEffect`а нормально хендлят (handler, ['sdf', 1]) для <[number, string]>?
источник

AR

Alexey Raspopov in Frontend UA
там нет необходимости хендлить типы массива
источник

AR

Alexey Raspopov in Frontend UA
но в моём случае для useResource(Res, [deps]) нужно, потому что deps это и параметры фетчинга и зависимости, которые определяют момент ре-фетчинга
источник

AR

Alexey Raspopov in Frontend UA
Alexey Raspopov
там нет необходимости хендлить типы массива
…там всего то нужен еслинт, чтобы проверить замыкание
источник

AV

Anton Verinov in Frontend UA
Так как проблема в месте вызова, то сильно сомневаюсь, что получится без дополнительных тайпкастов убедить тайпскрипт treat'ить [0, ''] как кортеж, а не как массив :/
источник

Вт

Ві тя in Frontend UA
Alexey Raspopov
начинаю понимать идею, спасибо
я тоже отдельно пришел к похожему, мозг ломается
источник
2021 March 25

AL

Andrey Listochkin in Frontend UA
Anton Verinov
Так как проблема в месте вызова, то сильно сомневаюсь, что получится без дополнительных тайпкастов убедить тайпскрипт treat'ить [0, ''] как кортеж, а не как массив :/
я в таких случаях забиваю и делаю объекты.

В месте вызова очень часто получается, что поля для объекта уже есть в переменных с соотвестствующими названиями, и вызов пыглядит как

call({ resourceA, sdf })

FYC @alexeyraspopov
источник

AV

Anton Verinov in Frontend UA
Andrey Listochkin
я в таких случаях забиваю и делаю объекты.

В месте вызова очень часто получается, что поля для объекта уже есть в переменных с соотвестствующими названиями, и вызов пыглядит как

call({ resourceA, sdf })

FYC @alexeyraspopov
Few York City?
источник

AL

Andrey Listochkin in Frontend UA
For Your Consideration
источник

AV

Anton Verinov in Frontend UA
Ааа 👍
источник

AL

Andrey Listochkin in Frontend UA
честно говоря, я не знаю, как тайпинги работают для стандартных реактовских методов useWhatever.
источник

AR

Alexey Raspopov in Frontend UA
Andrey Listochkin
я в таких случаях забиваю и делаю объекты.

В месте вызова очень часто получается, что поля для объекта уже есть в переменных с соотвестствующими названиями, и вызов пыглядит как

call({ resourceA, sdf })

FYC @alexeyraspopov
весьма обидно если именно тайпскрипт будет требовать полностью изменить всю идею апи, а я им даже не пользуюсь :D
источник

AR

Alexey Raspopov in Frontend UA
Andrey Listochkin
честно говоря, я не знаю, как тайпинги работают для стандартных реактовских методов useWhatever.
особо никаких типов там нет, просто стандартный набор, чтобы удостоверится что пользователь не пишет в useEffect объекты вместо функции, и всё такое.

конкретно для моих кастомных хуков, я хочу чтобы типы дополняли DX, без специальных требований к тому как писать код. лично мне лень писать все эти дженерики, extends, infer и прочую мета ерунду. я просто хочу два кусочка доменной логики написать и чтоб оно само мне сказало где я провтыкал
источник

Вт

Ві тя in Frontend UA
Ві тя
я тоже отдельно пришел к похожему, мозг ломается
источник

AR

Alexey Raspopov in Frontend UA
ты упускаешь что массив в useResource() должен совпадать сигнатурой с соответствующей query функцией
источник