[lint]: no-rest-destructuring does not report on custom hooks
Describe the bug
When using custom hooks for a query function, the no-rest-destructuring does not report.
Steps to reproduce
// Custom hook for query
const useTodos = () => {
return useQuery({
queryKey: ['todos'],
queryFn: () => fetch('example.com/todos'),
});
// NB results the same with const result = useQuery(/* */); return result;
};
function TodoList() {
// ✅ Normal usage - issue reported
const { dataA, ...restA } = useQuery({
queryKey: ['todos'],
queryFn: () => fetch('example.com/todos'),
});
// ❌ Custom hook - no issue reported
const { dataB, ...restB } = useTodos();
return <></>;
}
Expected behavior
Should report destructuring error when using const { ...rest } = useCustomQueryHook()
TanStack Query version
React query v5.50.1, eslint-plugin-query v5.71.5
TypeScript version
5.8.2
yeah I’ve seen that too, not sure if it’s doable, especially if the hook is imported from a different file. @Newbie012 what do you think?
It is if I check the hook's return type, but it will require type checking and will work only for projects using typescript-eslint.
if we want this, I think we’d need a separate config recomended-typechecking ?
Importing from a different file is pretty much my main use-case. TypeScript-only would be fine IMO, even if it was separate config.
if we want this, I think we’d need a separate config
recomended-typechecking?
Somewhat related to https://github.com/TanStack/query/pull/8966. I can add a flag for the rule to explicitly fallback to using ts.TypeChecker when using .recommendedTypeChecked