Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7913,6 +7913,25 @@ const testsFlow = {
}
`,
},
// Flow type aliases in type assertions should not be flagged as missing dependencies
{
code: normalizeIndent`
function MyComponent() {
type ColumnKey = 'id' | 'name';
type Item = {id: string, name: string};
const columns = useMemo(
() => [
{
type: 'text',
key: 'id',
} as TextColumn<ColumnKey, Item>,
],
[],
);
}
`,
},
],
invalid: [
{
Expand Down
11 changes: 7 additions & 4 deletions packages/eslint-plugin-react-hooks/src/rules/ExhaustiveDeps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import type {
VariableDeclarator,
} from 'estree';

import { getAdditionalEffectHooksFromSettings } from '../shared/Utils';
import {getAdditionalEffectHooksFromSettings} from '../shared/Utils';

type DeclaredDependency = {
key: string;
Expand Down Expand Up @@ -80,7 +80,6 @@ const rule = {
const rawOptions = context.options && context.options[0];
const settings = context.settings || {};


// Parse the `additionalHooks` regex.
// Use rule-level additionalHooks if provided, otherwise fall back to settings
const additionalHooks =
Expand Down Expand Up @@ -565,8 +564,12 @@ const rule = {
continue;
}
// Ignore Flow type parameters
// @ts-expect-error We don't have flow types
if (def.type === 'TypeParameter') {
if (
// @ts-expect-error We don't have flow types
def.type === 'TypeParameter' ||
// @ts-expect-error Flow-specific AST node type
dependencyNode.parent?.type === 'GenericTypeAnnotation'
) {
continue;
}

Expand Down
Loading