Dificuldade com composição de React hooks com TypeScript #1813
Unanswered
tassoevan
asked this question in
Perguntas e Respostas
Replies: 1 comment
-
Sei que não é de ajuda mas tem como portar um exemplo onde quebre usando sem o Diria pra tentar ajudar, tentou colocar alguma validação onde jogue um erro quando não for |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Olá, tudo bem?
Estou fazendo a transição de um pequeno conjunto de React hooks de JavaScript para TypeScript. Um destes hooks,
useSafely()
, serve para composição com os hooks primitivos de estadouseReducer()
euseState()
:Basicamente ele faz o "trabalho sujo" de evitar uma mutação acidental do estado de um componente já desmontado (futuramente espero evitar memory leaks também), algo que infelizmente é necessário enquanto procuramos uma solução mais robusta para lidar com side effects assíncronos.
O problema em específico que estou encontrando se refere a declarar uma versão tipada de
useSafely()
. O seu único argumento é um par do tipo[S, React.DispatchWithoutAction | React.Dispatch<A>]
, ondeS
é um tipo genérico para o estado eA
para ação enviada pordispatch
. EmuseState<S>()
o retorno é um par do tipo[S, React.Dispatch<React.SetStateAction<S>>]
masuseReducer()
pode prover tanto[S, React.Dispatch<A>]
e[S, React.DispatchWithoutAction]
. De alguma forma essa ambiguidade tem causado um problema de inferência de tipo do segundo elemento do par com o modo estrito ativado ("strict": true
notsconfig.json
). A funçãodispatch
pode ser tanto() => void
quando(action: A) => void
mas por algum motivo dotsc
entende que istosó pode representar que
safeDispatch
éReact.Dispatch<A>
.O que estou fazendo de errado?
Beta Was this translation helpful? Give feedback.
All reactions