fix(eslint-plugin): [consistent-indexed-object-style] skip fixer if interface is a default export#11951
Conversation
|
Thanks for the PR, @camc314! typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community. The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately. Thanks again! 🙏 Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently on https://opencollective.com/typescript-eslint. |
✅ Deploy Preview for typescript-eslint ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
View your CI Pipeline Execution ↗ for commit 84c382f
☁️ Nx Cloud last updated this comment at |
3a1b0c6 to
84c382f
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #11951 +/- ##
=======================================
Coverage 90.72% 90.73%
=======================================
Files 527 527
Lines 53678 53679 +1
Branches 9026 9027 +1
=======================================
+ Hits 48702 48703 +1
Misses 4963 4963
Partials 13 13
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
JoshuaKGoldberg
left a comment
There was a problem hiding this comment.
Thanks!
It's odd to me that export default type isn't allowed. 🤷
76f8ff7
into
typescript-eslint:main
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.53.0 | 8.53.1 | | npm | @typescript-eslint/parser | 8.53.0 | 8.53.1 | ## [v8.53.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.53.0 | 8.53.1 | | npm | @typescript-eslint/parser | 8.53.0 | 8.53.1 | ## [v8.53.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.53.0 | 8.53.1 | | npm | @typescript-eslint/parser | 8.53.0 | 8.53.1 | ## [v8.53.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.53.0 | 8.53.1 | | npm | @typescript-eslint/parser | 8.53.0 | 8.53.1 | ## [v8.53.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.53.0 | 8.53.1 | | npm | @typescript-eslint/parser | 8.53.0 | 8.53.1 | ## [v8.53.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.53.0 | 8.53.1 | | npm | @typescript-eslint/parser | 8.53.0 | 8.53.1 | ## [v8.53.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
This MR contains the following updates: | Package | Type | Update | Change | OpenSSF | |---|---|---|---|---| | [@testing-library/react](https://github.com/testing-library/react-testing-library) | devDependencies | patch | [`16.3.1` → `16.3.2`](https://renovatebot.com/diffs/npm/@testing-library%2freact/16.3.1/16.3.2) | [](https://securityscorecards.dev/viewer/?uri=github.com/testing-library/react-testing-library) | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | devDependencies | patch | [`19.2.8` → `19.2.9`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.8/19.2.9) | [](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.53.0/8.53.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.53.0/8.53.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) | | [ace-builds](https://github.com/ajaxorg/ace-builds) | dependencies | patch | [`1.43.5` → `1.43.6`](https://renovatebot.com/diffs/npm/ace-builds/1.43.5/1.43.6) | [](https://securityscorecards.dev/viewer/?uri=github.com/ajaxorg/ace-builds) | | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | patch | [`3.8.0` → `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) | | [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.53.0/8.53.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) | --- ### Release Notes <details> <summary>testing-library/react-testing-library (@​testing-library/react)</summary> ### [`v16.3.2`](https://github.com/testing-library/react-testing-library/releases/tag/v16.3.2) [Compare Source](testing-library/react-testing-library@v16.3.1...v16.3.2) ##### Bug Fixes - Update 'onCaughtError' type inference in 'RenderOptions' to work with React v19 ([#​1438](testing-library/react-testing-library#1438)) ([f32bd1b](testing-library/react-testing-library@f32bd1b)) </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) [Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#​11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#​11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@​y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8531-2026-01-19) [Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>ajaxorg/ace-builds (ace-builds)</summary> ### [`v1.43.6`](https://github.com/ajaxorg/ace-builds/blob/HEAD/CHANGELOG.md#1436-2026-01-23) [Compare Source](ajaxorg/ace-builds@v1.43.5...v1.43.6) </details> <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381) [Compare Source](prettier/prettier@3.8.0...3.8.1) [diff](prettier/prettier@3.8.0...3.8.1) ##### Include available `printers` in plugin type declarations ([#​18706](prettier/prettier#18706) by [@​porada](https://github.com/porada)) <!-- prettier-ignore --> ```ts // Input import * as prettierPluginEstree from "prettier/plugins/estree"; // Prettier 3.8.0 // Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339) prettierPluginEstree.printers.estree; //=> any // Prettier 3.8.1 prettierPluginEstree.printers.estree; //=> Printer prettierPluginEstree.printers["estree-json"]; //=> Printer ``` </details> <details> <summary>typescript-eslint/typescript-eslint (typescript-eslint)</summary> ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8531-2026-01-19) [Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi40IiwidXBkYXRlZEluVmVyIjoiNDIuOTIuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=--> See merge request swiss-armed-forces/cyber-command/cea/loom!262 Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
chore(deps): update frontend dependencies (patch) (patch) This MR contains the following updates: | Package | Type | Update | Change | OpenSSF | |---|---|---|---|---| | [@testing-library/react](https://github.com/testing-library/react-testing-library) | devDependencies | patch | [`16.3.1` → `16.3.2`](https://renovatebot.com/diffs/npm/@testing-library%2freact/16.3.1/16.3.2) | [](https://securityscorecards.dev/viewer/?uri=github.com/testing-library/react-testing-library) | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | devDependencies | patch | [`19.2.8` → `19.2.9`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.8/19.2.9) | [](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.53.0/8.53.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.53.0/8.53.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) | | [ace-builds](https://github.com/ajaxorg/ace-builds) | dependencies | patch | [`1.43.5` → `1.43.6`](https://renovatebot.com/diffs/npm/ace-builds/1.43.5/1.43.6) | [](https://securityscorecards.dev/viewer/?uri=github.com/ajaxorg/ace-builds) | | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | patch | [`3.8.0` → `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) | | [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.53.0/8.53.1) | [](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) | --- ### Release Notes <details> <summary>testing-library/react-testing-library (@​testing-library/react)</summary> ### [`v16.3.2`](https://github.com/testing-library/react-testing-library/releases/tag/v16.3.2) [Compare Source](testing-library/react-testing-library@v16.3.1...v16.3.2) ##### Bug Fixes - Update 'onCaughtError' type inference in 'RenderOptions' to work with React v19 ([#​1438](testing-library/react-testing-library#1438)) ([f32bd1b](testing-library/react-testing-library@f32bd1b)) </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19) [Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1) ##### 🩹 Fixes - **utils:** make RuleCreator root defaultOptions optional ([#​11956](typescript-eslint/typescript-eslint#11956)) - **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#​11951](typescript-eslint/typescript-eslint#11951)) ##### ❤️ Thank You - Cameron - Yukihiro Hasegawa [@​y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8531-2026-01-19) [Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>ajaxorg/ace-builds (ace-builds)</summary> ### [`v1.43.6`](https://github.com/ajaxorg/ace-builds/blob/HEAD/CHANGELOG.md#1436-2026-01-23) [Compare Source](ajaxorg/ace-builds@v1.43.5...v1.43.6) </details> <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381) [Compare Source](prettier/prettier@3.8.0...3.8.1) [diff](prettier/prettier@3.8.0...3.8.1) ##### Include available `printers` in plugin type declarations ([#​18706](prettier/prettier#18706) by [@​porada](https://github.com/porada)) <!-- prettier-ignore --> ```ts // Input import * as prettierPluginEstree from "prettier/plugins/estree"; // Prettier 3.8.0 // Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339) prettierPluginEstree.printers.estree; //=> any // Prettier 3.8.1 prettierPluginEstree.printers.estree; //=> Printer prettierPluginEstree.printers["estree-json"]; //=> Printer ``` </details> <details> <summary>typescript-eslint/typescript-eslint (typescript-eslint)</summary> ### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8531-2026-01-19) [Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi40IiwidXBkYXRlZEluVmVyIjoiNDIuOTIuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=--> See merge request swiss-armed-forces/cyber-command/cea/loom!262 Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com> Co-authored-by: open-source Pipeline <group_90701827_bot_ed04ae348bc5f40af9966fb8b6867e99@noreply.gitlab.com>

PR Checklist
Overview
checkout the playground: https://typescript-eslint.io/play#ts=5.9.2&fileType=.tsx&code=FAUwHgDg9gTgLgAgCYgGYEMCuAbRBLAOzhBgwGMQEBlMgCxCRxKpIDc8KEBvYBPhANoBrEAE8AXAgDOcGIQDmAXUmYCQglADuBANzAAvkA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6MgeyeUuX0Ra1mAE0QAPRMNocARgCtEZOn0JJ0URNGgdokcGAC%2BIA0A&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkJemy0eAcgK6qoDCAFutAGsylBm3TgwAXxCSgA&tokens=false
has a quick fix to:
But this creates invalid source code, as you cannot have
export default typeRefs: oxc-project/oxc#17866
Note: I used AI for this PR, but I've reviewed the code it's written and I take responsibility for it's correcness and it's quality