Skip to content

Bug: [no-unnecessary-condition] warns about conditional assignment to index signature #6632

Open
@ehoogeveen-medweb

Description

@ehoogeveen-medweb

Before You File a Bug Report Please Confirm You Have Done The Following...

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have searched for related issues and found none that matched my issue.
  • I have read the FAQ and my problem is not listed.

Playground Link

https://typescript-eslint.io/play#ts=4.9.5&sourceType=module&code=MYewdgzgLgBAZiEAuGAlApqATgEwDzRYCWYA5gDQxgCuAtgEbpYB8MAvDAN4C+A3ALAAoUJFj0AhlhSESpdjADkAa3QBPBQMFCEIANoSsAXRgB+ExwAMvGAHob8RPsnGiEKiFgkiUIuIA2RABe6DiU9NSwIjjeROD+MOIQEESkYLToYJ5ucH7ipKQhCW7UYGCY6EmSqgB02o4GxgDUHACMmkA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6Jge1tiacTJTIAhtEK0yHJgBNK+SpPRRE0aB2iRwYAL4gtQA&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkJemy0eFYDAruuGAL4g9A

Repro Code

const foo: Record<string, number> = {};
const bar: string = 'key';

foo[bar] ??= 0; // foo[bar] is not initialized, but conditional assignment is flagged as unnecessary.
foo[bar] += 1;

ESLint Config

module.exports = {
  parser: "@typescript-eslint/parser",
  rules: {
    "@typescript-eslint/no-unnecessary-condition": "error",
  },
};

tsconfig

{
  "compilerOptions": {
    "strict": true
  }
}

Expected Result

No warning.

Actual Result

Unnecessary conditional, expected left-hand side of ?? operator to be possibly null or undefined. 4:1 - 4:9

Additional Info

This is basically #6264 which was fixed in #6452; I guess it resurfaced because the rule now checks logical assignments as of #6594.

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issuebugSomething isn't workingpackage: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions