Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.8k
fix(eslint-plugin): [prefer-optional-chain] ignorecheck
option for most RHS of a chain#11272
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
fix(eslint-plugin): [prefer-optional-chain] ignorecheck
option for most RHS of a chain#11272
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Thanks for the PR,@nayounsang! 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 onhttps://opencollective.com/typescript-eslint. |
netlifybot commentedJun 5, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
✅ Deploy Preview fortypescript-eslint ready!
To edit notification comments on pull requests, go to yourNetlify project configuration. |
nx-cloudbot commentedJun 5, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
View yourCI Pipeline Execution ↗ for commitdee8b4d
☁️Nx Cloud last updated this comment at |
codecovbot commentedJun 5, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@## main #11272 +/- ##======================================= Coverage 90.86% 90.86% ======================================= Files 503 503 Lines 51046 51048 +2 Branches 8418 8416 -2 =======================================+ Hits 46384 46386 +2 Misses 4648 4648 Partials 14 14
Flags with carried forward coverage won't be shown.Click here to find out more.
🚀 New features to boost your workflow:
|
?.()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
This generally looks great! Just one big question on the implementation approach we want to take. Looking forward to hearing your thoughts!
packages/eslint-plugin/src/rules/prefer-optional-chain-utils/gatherLogicalOperands.tsShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
…ypescript-eslint into void-optional-chain
This PR has the effect that the following code is flagged (with declareconstmaybeVoid:void|{x:()=>{some:'object'}};maybeVoid&&maybeVoid.x(); I'm not sure that that's what we want? I'd say instead the goal is that a In other words, as far as implementation - we're not looking to include possibly- WDYT? |
kirkwaiblinger commentedJul 7, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I've realized — I think this is a much more general bug. The declareconstx:{a:string};// checkString: trueconsty=x&&x.a;// correctly reports// checkString: falseconsty=x&&x.a;// (BUG) doesn't report So, if we generally fix the logic so that the type checking only applies to the LHS of a potential chain expression |
Then, I guess we can check it except for right most. I will finish the work on void and reply. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I think this is moving in the right direction, but the current state of the PR seems to be mostly extraneous changes. Let's clean it up to be focused on the changes related to the bug. Thanks!
packages/eslint-plugin/tests/rules/prefer-optional-chain/prefer-optional-chain.test.ts OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
packages/eslint-plugin/tests/rules/prefer-optional-chain/prefer-optional-chain.test.ts OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
packages/eslint-plugin/tests/rules/prefer-optional-chain/prefer-optional-chain.test.tsShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
packages/eslint-plugin/src/rules/prefer-optional-chain-utils/gatherLogicalOperands.tsShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
(see review)
nayounsang commentedJul 16, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Oh, sorry. I misunderstood your review. Now I know what to do |
?.()
check
option for most RHS of a chainHey@nayounsang — is this ready for another review pass? If so, weask that you request review in the GUI so we know to take another look. If not, take your time and don't mind me! Just looked like it might be ready for another pass. Thanks! |
packages/eslint-plugin/tests/rules/prefer-optional-chain/prefer-optional-chain.test.ts OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
…r-optional-chain.test.ts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks!
757f9ee
intotypescript-eslint:mainUh oh!
There was an error while loading.Please reload this page.
| datasource | package | from | to || ---------- | -------------------------------- | ------ | ------ || npm | @typescript-eslint/eslint-plugin | 8.32.1 | 8.39.0 || npm | @typescript-eslint/parser | 8.32.1 | 8.39.0 |## [v8.39.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8390-2025-08-04)##### 🚀 Features- **eslint-plugin:** \[only-throw-error] support yield/await expressions ([#11417](typescript-eslint/typescript-eslint#11417))- **eslint-plugin:** add no-unnecessary-type-conversion to strict-type-checked ruleset ([#11427](typescript-eslint/typescript-eslint#11427))- update to TypeScript 5.9.2 ([#11445](typescript-eslint/typescript-eslint#11445))- **eslint-plugin:** \[naming-convention] add enumMember PascalCase default option ([#11127](typescript-eslint/typescript-eslint#11127))##### 🩹 Fixes- **eslint-plugin:** \[no-unsafe-assignment] add an `unsafeObjectPattern` message ([#11403](typescript-eslint/typescript-eslint#11403))- **eslint-plugin:** \[prefer-optional-chain] ignore `check` option for most RHS of a chain ([#11272](typescript-eslint/typescript-eslint#11272))##### ❤️ Thank You- Brad Zacher [@bradzacher](https://github.com/bradzacher)- James Garbutt [@43081j](https://github.com/43081j)- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)- Sasha Kondrashov- tao- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.38.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8380-2025-07-21)##### 🩹 Fixes- disallow extra properties in rule options ([#11397](typescript-eslint/typescript-eslint#11397))- **eslint-plugin:** \[consistent-generic-constructors] resolve conflict with `isolatedDeclarations` if enabled in `constructor` option ([#11351](typescript-eslint/typescript-eslint#11351))##### ❤️ Thank You- Andrew Kazakov [@andreww2012](https://github.com/andreww2012)- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.37.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8370-2025-07-14)##### 🩹 Fixes- **eslint-plugin:** \[unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option ([#11381](typescript-eslint/typescript-eslint#11381))##### ❤️ Thank You- Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.36.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8360-2025-07-07)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8351-2025-06-30)##### 🩹 Fixes- remove prettier from eslint-plugin ([#11339](typescript-eslint/typescript-eslint#11339))##### ❤️ Thank You- Abhijeet Singh [@cseas](https://github.com/cseas)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8350-2025-06-23)##### 🚀 Features- **eslint-plugin:** \[no-base-to-string] add checkUnknown Option ([#11128](typescript-eslint/typescript-eslint#11128))##### ❤️ Thank You- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8341-2025-06-16)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8340-2025-06-09)##### 🩹 Fixes- **typescript-estree:** add validation to interface extends ([#11271](typescript-eslint/typescript-eslint#11271))##### ❤️ Thank You- TaoYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8331-2025-06-02)##### 🩹 Fixes- exclude docs/ directory from eslint-plugin package ([#11251](typescript-eslint/typescript-eslint#11251))##### ❤️ Thank You- roottoolYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8330-2025-05-26)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
| datasource | package | from | to || ---------- | -------------------------------- | ------ | ------ || npm | @typescript-eslint/eslint-plugin | 8.32.1 | 8.39.0 || npm | @typescript-eslint/parser | 8.32.1 | 8.39.0 |## [v8.39.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8390-2025-08-04)##### 🚀 Features- **eslint-plugin:** \[only-throw-error] support yield/await expressions ([#11417](typescript-eslint/typescript-eslint#11417))- **eslint-plugin:** add no-unnecessary-type-conversion to strict-type-checked ruleset ([#11427](typescript-eslint/typescript-eslint#11427))- update to TypeScript 5.9.2 ([#11445](typescript-eslint/typescript-eslint#11445))- **eslint-plugin:** \[naming-convention] add enumMember PascalCase default option ([#11127](typescript-eslint/typescript-eslint#11127))##### 🩹 Fixes- **eslint-plugin:** \[no-unsafe-assignment] add an `unsafeObjectPattern` message ([#11403](typescript-eslint/typescript-eslint#11403))- **eslint-plugin:** \[prefer-optional-chain] ignore `check` option for most RHS of a chain ([#11272](typescript-eslint/typescript-eslint#11272))##### ❤️ Thank You- Brad Zacher [@bradzacher](https://github.com/bradzacher)- James Garbutt [@43081j](https://github.com/43081j)- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)- Sasha Kondrashov- tao- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.38.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8380-2025-07-21)##### 🩹 Fixes- disallow extra properties in rule options ([#11397](typescript-eslint/typescript-eslint#11397))- **eslint-plugin:** \[consistent-generic-constructors] resolve conflict with `isolatedDeclarations` if enabled in `constructor` option ([#11351](typescript-eslint/typescript-eslint#11351))##### ❤️ Thank You- Andrew Kazakov [@andreww2012](https://github.com/andreww2012)- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.37.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8370-2025-07-14)##### 🩹 Fixes- **eslint-plugin:** \[unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option ([#11381](typescript-eslint/typescript-eslint#11381))##### ❤️ Thank You- Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.36.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8360-2025-07-07)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8351-2025-06-30)##### 🩹 Fixes- remove prettier from eslint-plugin ([#11339](typescript-eslint/typescript-eslint#11339))##### ❤️ Thank You- Abhijeet Singh [@cseas](https://github.com/cseas)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8350-2025-06-23)##### 🚀 Features- **eslint-plugin:** \[no-base-to-string] add checkUnknown Option ([#11128](typescript-eslint/typescript-eslint#11128))##### ❤️ Thank You- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8341-2025-06-16)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8340-2025-06-09)##### 🩹 Fixes- **typescript-estree:** add validation to interface extends ([#11271](typescript-eslint/typescript-eslint#11271))##### ❤️ Thank You- TaoYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8331-2025-06-02)##### 🩹 Fixes- exclude docs/ directory from eslint-plugin package ([#11251](typescript-eslint/typescript-eslint#11251))##### ❤️ Thank You- roottoolYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8330-2025-05-26)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
| datasource | package | from | to || ---------- | -------------------------------- | ------ | ------ || npm | @typescript-eslint/eslint-plugin | 8.32.1 | 8.39.0 || npm | @typescript-eslint/parser | 8.32.1 | 8.39.0 |## [v8.39.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8390-2025-08-04)##### 🚀 Features- **eslint-plugin:** \[only-throw-error] support yield/await expressions ([#11417](typescript-eslint/typescript-eslint#11417))- **eslint-plugin:** add no-unnecessary-type-conversion to strict-type-checked ruleset ([#11427](typescript-eslint/typescript-eslint#11427))- update to TypeScript 5.9.2 ([#11445](typescript-eslint/typescript-eslint#11445))- **eslint-plugin:** \[naming-convention] add enumMember PascalCase default option ([#11127](typescript-eslint/typescript-eslint#11127))##### 🩹 Fixes- **eslint-plugin:** \[no-unsafe-assignment] add an `unsafeObjectPattern` message ([#11403](typescript-eslint/typescript-eslint#11403))- **eslint-plugin:** \[prefer-optional-chain] ignore `check` option for most RHS of a chain ([#11272](typescript-eslint/typescript-eslint#11272))##### ❤️ Thank You- Brad Zacher [@bradzacher](https://github.com/bradzacher)- James Garbutt [@43081j](https://github.com/43081j)- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)- Sasha Kondrashov- tao- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.38.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8380-2025-07-21)##### 🩹 Fixes- disallow extra properties in rule options ([#11397](typescript-eslint/typescript-eslint#11397))- **eslint-plugin:** \[consistent-generic-constructors] resolve conflict with `isolatedDeclarations` if enabled in `constructor` option ([#11351](typescript-eslint/typescript-eslint#11351))##### ❤️ Thank You- Andrew Kazakov [@andreww2012](https://github.com/andreww2012)- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.37.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8370-2025-07-14)##### 🩹 Fixes- **eslint-plugin:** \[unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option ([#11381](typescript-eslint/typescript-eslint#11381))##### ❤️ Thank You- Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.36.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8360-2025-07-07)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8351-2025-06-30)##### 🩹 Fixes- remove prettier from eslint-plugin ([#11339](typescript-eslint/typescript-eslint#11339))##### ❤️ Thank You- Abhijeet Singh [@cseas](https://github.com/cseas)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8350-2025-06-23)##### 🚀 Features- **eslint-plugin:** \[no-base-to-string] add checkUnknown Option ([#11128](typescript-eslint/typescript-eslint#11128))##### ❤️ Thank You- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8341-2025-06-16)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8340-2025-06-09)##### 🩹 Fixes- **typescript-estree:** add validation to interface extends ([#11271](typescript-eslint/typescript-eslint#11271))##### ❤️ Thank You- TaoYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8331-2025-06-02)##### 🩹 Fixes- exclude docs/ directory from eslint-plugin package ([#11251](typescript-eslint/typescript-eslint#11251))##### ❤️ Thank You- roottoolYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8330-2025-05-26)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
| datasource | package | from | to || ---------- | -------------------------------- | ------ | ------ || npm | @typescript-eslint/eslint-plugin | 8.32.1 | 8.39.0 || npm | @typescript-eslint/parser | 8.32.1 | 8.39.0 |## [v8.39.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8390-2025-08-04)##### 🚀 Features- **eslint-plugin:** \[only-throw-error] support yield/await expressions ([#11417](typescript-eslint/typescript-eslint#11417))- **eslint-plugin:** add no-unnecessary-type-conversion to strict-type-checked ruleset ([#11427](typescript-eslint/typescript-eslint#11427))- update to TypeScript 5.9.2 ([#11445](typescript-eslint/typescript-eslint#11445))- **eslint-plugin:** \[naming-convention] add enumMember PascalCase default option ([#11127](typescript-eslint/typescript-eslint#11127))##### 🩹 Fixes- **eslint-plugin:** \[no-unsafe-assignment] add an `unsafeObjectPattern` message ([#11403](typescript-eslint/typescript-eslint#11403))- **eslint-plugin:** \[prefer-optional-chain] ignore `check` option for most RHS of a chain ([#11272](typescript-eslint/typescript-eslint#11272))##### ❤️ Thank You- Brad Zacher [@bradzacher](https://github.com/bradzacher)- James Garbutt [@43081j](https://github.com/43081j)- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)- Sasha Kondrashov- tao- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.38.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8380-2025-07-21)##### 🩹 Fixes- disallow extra properties in rule options ([#11397](typescript-eslint/typescript-eslint#11397))- **eslint-plugin:** \[consistent-generic-constructors] resolve conflict with `isolatedDeclarations` if enabled in `constructor` option ([#11351](typescript-eslint/typescript-eslint#11351))##### ❤️ Thank You- Andrew Kazakov [@andreww2012](https://github.com/andreww2012)- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.37.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8370-2025-07-14)##### 🩹 Fixes- **eslint-plugin:** \[unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option ([#11381](typescript-eslint/typescript-eslint#11381))##### ❤️ Thank You- Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.36.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8360-2025-07-07)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8351-2025-06-30)##### 🩹 Fixes- remove prettier from eslint-plugin ([#11339](typescript-eslint/typescript-eslint#11339))##### ❤️ Thank You- Abhijeet Singh [@cseas](https://github.com/cseas)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8350-2025-06-23)##### 🚀 Features- **eslint-plugin:** \[no-base-to-string] add checkUnknown Option ([#11128](typescript-eslint/typescript-eslint#11128))##### ❤️ Thank You- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8341-2025-06-16)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8340-2025-06-09)##### 🩹 Fixes- **typescript-estree:** add validation to interface extends ([#11271](typescript-eslint/typescript-eslint#11271))##### ❤️ Thank You- TaoYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8331-2025-06-02)##### 🩹 Fixes- exclude docs/ directory from eslint-plugin package ([#11251](typescript-eslint/typescript-eslint#11251))##### ❤️ Thank You- roottoolYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8330-2025-05-26)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
| datasource | package | from | to || ---------- | -------------------------------- | ------ | ------ || npm | @typescript-eslint/eslint-plugin | 8.32.1 | 8.39.0 || npm | @typescript-eslint/parser | 8.32.1 | 8.39.0 |## [v8.39.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8390-2025-08-04)##### 🚀 Features- **eslint-plugin:** \[only-throw-error] support yield/await expressions ([#11417](typescript-eslint/typescript-eslint#11417))- **eslint-plugin:** add no-unnecessary-type-conversion to strict-type-checked ruleset ([#11427](typescript-eslint/typescript-eslint#11427))- update to TypeScript 5.9.2 ([#11445](typescript-eslint/typescript-eslint#11445))- **eslint-plugin:** \[naming-convention] add enumMember PascalCase default option ([#11127](typescript-eslint/typescript-eslint#11127))##### 🩹 Fixes- **eslint-plugin:** \[no-unsafe-assignment] add an `unsafeObjectPattern` message ([#11403](typescript-eslint/typescript-eslint#11403))- **eslint-plugin:** \[prefer-optional-chain] ignore `check` option for most RHS of a chain ([#11272](typescript-eslint/typescript-eslint#11272))##### ❤️ Thank You- Brad Zacher [@bradzacher](https://github.com/bradzacher)- James Garbutt [@43081j](https://github.com/43081j)- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)- Sasha Kondrashov- tao- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.38.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8380-2025-07-21)##### 🩹 Fixes- disallow extra properties in rule options ([#11397](typescript-eslint/typescript-eslint#11397))- **eslint-plugin:** \[consistent-generic-constructors] resolve conflict with `isolatedDeclarations` if enabled in `constructor` option ([#11351](typescript-eslint/typescript-eslint#11351))##### ❤️ Thank You- Andrew Kazakov [@andreww2012](https://github.com/andreww2012)- Younsang Na [@nayounsang](https://github.com/nayounsang)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.37.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8370-2025-07-14)##### 🩹 Fixes- **eslint-plugin:** \[unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option ([#11381](typescript-eslint/typescript-eslint#11381))##### ❤️ Thank You- Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.36.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8360-2025-07-07)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8351-2025-06-30)##### 🩹 Fixes- remove prettier from eslint-plugin ([#11339](typescript-eslint/typescript-eslint#11339))##### ❤️ Thank You- Abhijeet Singh [@cseas](https://github.com/cseas)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.35.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8350-2025-06-23)##### 🚀 Features- **eslint-plugin:** \[no-base-to-string] add checkUnknown Option ([#11128](typescript-eslint/typescript-eslint#11128))##### ❤️ Thank You- Kim Sang Du [@developer-bandi](https://github.com/developer-bandi)You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8341-2025-06-16)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.34.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8340-2025-06-09)##### 🩹 Fixes- **typescript-estree:** add validation to interface extends ([#11271](typescript-eslint/typescript-eslint#11271))##### ❤️ Thank You- TaoYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8331-2025-06-02)##### 🩹 Fixes- exclude docs/ directory from eslint-plugin package ([#11251](typescript-eslint/typescript-eslint#11251))##### ❤️ Thank You- roottoolYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.## [v8.33.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8330-2025-05-26)This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
Uh oh!
There was an error while loading.Please reload this page.
PR Checklist
?.()
#11270Overview