Skip to content

Enhancement: [prefer-nullish-coalescing] should support if statement assignment (??=) #10829

Closed
@kirkwaiblinger

Description

@kirkwaiblinger

Before You File a Proposal Please Confirm You Have Done The Following...

My proposal is suitable for this project

  • I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).

Link to the rule's documentation

https://typescript-eslint.io/rules/prefer-nullish-coalescing/

Description

I propose that the rule should flag if statements that are equivalent to a nullish coalescing assignment (??=).

Fail

declare let foo: { a: string } | null;

declare function makeFoo(): { a: string };

function lazyInitializeByTruthiness() {
  if (!foo) {
    foo = makeFoo();
  }
}

function lazyInitializeByNullCheck() {
  if (foo == null) {
    foo = makeFoo();
  }
}

export { }

Pass

declare let foo: { a: string } | null;

declare function makeFoo(): { a: string };

function lazyInitializeByNullishCoalescingAssignment() {
  foo ??= makeFoo();
}

export { }

Additional Info

playground

relates to #6309

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issueenhancement: plugin rule optionNew rule option for an existing eslint-plugin rulelocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions