Description
Is there an existing issue for this?
- I have searched the existing issues and my issue is uniqueMy issue appears in the command-line and not only in the text editor
Description Overview
This is a follow up of #3874, since flat
is Record<string, ReactFlatConfig>
, flat.xxx
or flat["xxx"]
could be undefined. The fix might be explicitly list recommended
, all
and jsx-runtime
as the key of the Record instead of using string
.

import tseslint from 'typescript-eslint'
import reactPlugin from 'eslint-plugin-react'
export default tseslint.config(
reactPlugin.configs.flat.recommended
)
Argument of type 'ReactFlatConfig | undefined' is not assignable to parameter of type 'InfiniteDepthConfigWithExtends'.
Expected Behavior
No type error
eslint-plugin-react version
v7.37.4
eslint version
9.17.0
node version
v22.13.0
Activity
fix(types): fix types of flat configs
ljharb commentedon Jan 14, 2025
To be clear, this is not a bug - the types are correct - but you're right they could be more helpful.
[-][Bug]: flat configs are possibly undefined[/-][+][enhancement]: flat configs are possibly undefined[/+]fix(types): fix types of flat configs
fix(types): fix types of flat configs
fix(types): fix types of flat configs
fix(types): fix types of flat configs
CHC383 commentedon Jan 14, 2025
Just to share a workaround for Typescript users until we figure out how to type the configs properly
fix(types): fix types of flat configs
3dos commentedon Feb 11, 2025
As a workaround, I added a
.d.ts
file to fix original types which are too loose:This could be a fix for this lib but I see there is already an open PR. I can propose this fix in another PR if it makes sense
ljharb commentedon Feb 11, 2025
Please don’t open an additional PR; if you have a fix that could work, please post a link to the branch on the existing PR.
3dos commentedon Feb 11, 2025
The fix is just there. The branch is more a refactor with a breaking change, this is why I offered to create a simpler PR with the mentioned typing fix.
ljharb commentedon Feb 11, 2025
Since our types are built, that isn’t a possible fix we can apply, unfortunately.
3dos commentedon Feb 11, 2025
I don't understand, if your types are generated from the JSDocs, then the fix seems pretty simple; Change
Record<string, ReactFlatConfig>
toRecord<'all' | 'recommended' | 'jsx-runtime', ReactFlatConfig>
here:eslint-plugin-react/index.js
Line 100 in e6b5b41
Or am I missing something?
CHC383 commentedon Feb 11, 2025
@3dos There were two attempts to fix this issue, #3879 and #3882, #3879 was taking the same approach as yours and it didn't work due to #3879 (comment), you could try it yourself by applying your changes locally and test it through #3879 (comment)