This issue seems related to #18828, but it's not identical. Using typeof on a primitive value seems to work as expected, but it fails for nested property access.
Version: eslint-plugin-react-hooks@4.6.0
Steps To Reproduce
import { useEffect, useState } from "react";
const Dummy = () => {
const [foo, setFoo] = useState<{ bar: number }>({ bar: 42 });
useEffect(() => {
const square = (x: typeof foo.bar) => x * x;
setFoo((previous) => ({ ...previous, bar: square(previous.bar) }));
}, []);
};
The current behavior
This effect clearly doesn't have external (value) dependencies, but I get this:
ESLint: React Hook useEffect has a missing dependency: 'foo'. Either include it or remove the dependency array. (react-hooks/exhaustive-deps)
The expected behavior
Using typeof never leads to a dependency requirement, just like in this example doesn't:
import { useEffect, useState } from "react";
const Dummy = () => {
const [bar, setBar] = useState<number>(42);
useEffect(() => {
const square = (x: typeof bar) => x * x;
setBar(square);
}, []);
};
This issue seems related to #18828, but it's not identical. Using
typeofon a primitive value seems to work as expected, but it fails for nested property access.Version:
eslint-plugin-react-hooks@4.6.0Steps To Reproduce
The current behavior
This effect clearly doesn't have external (value) dependencies, but I get this:
The expected behavior
Using
typeofnever leads to a dependency requirement, just like in this example doesn't: