-
I'm trying to write a simple wrapper hook for useQuery that lets the user define their own select. If they don't define a select, the default implementation is used. I'm trying to figure out why this typing wont work. interface Params {
session: string;
types: number[];
select?: <TResult>(data: AxiosResponse<Alerts>) => TResult;
}
const useAlerts = ({ session, types, select }: Params) => {
return useQuery({
queryKey: [ALERTS, session, types],
queryFn: getAlerts(session, types),
select: select !== undefined ? select : ({ data }) => data
});
};
export default useAlerts;
const { data } = useAlerts({
session: 'abc',
types: [123, 1234, 12],
select: ({ data: innerData }) => innerData[0] // TS Error Here
});
console.dir(data); The error I'm getting is...
Anyone know how to do this? |
Beta Was this translation helpful? Give feedback.
Answered by
TkDodo
Mar 16, 2024
Replies: 1 comment
-
just always pass the |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
matzxrr
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
just always pass
select
and give it a default type parameter:https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgQQB7AgZwEoFNOQB2mucAvnAGZQQhwDkAhulvQFCiSyJwCuJARV64oAT3JUadegAEYjYvIDGAawD0UXIyUwAtAEdhY9mxiiwpZABsRMTHAC8iNnFdxGN2AC4GH2+zIAbQBdNg5CGBFKbVIABUYoRhBMAB4AFTxMXit4JzQMHHwiEhTrW0wAPgrnVxJMTAxCH0wYKGBCAHMAbhc4MwtMH0JeEAAjERCe2twbHQB+HwAKABNGeR98rEzi3FLPOwqASkdqjPxsmB6yMOXcJSsE0kpeQh1GuA7cGDLYTEW6hoQJpwFptToAGj65nwQxG4ygIUOPliUmAJU2hQIQPR+0qFTCSmx8H4uB+dkccHSmQuFIx22xuzJeMWSABjUh-XwkJIs3gZGRCSSqTOWRyRxONTgmhgvCghD4giMohZvVchhEogA0rhRD5AgAiZAAGQAotg0gBlfXc-CAwgc6GYYLg1VwdViABiwMWxwc1U+31x-1t7KhA0OLrcIJmdxgvTIhyuPTYuFQXHgt2iNJJTOThMUPFW8gkThzQYQvTZQJ8TFGSnokbDMLggQAjAAmADMkI7…