Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Rule proposal: prefer-private-class-members  #5228

Copy link
Copy link
Closed as not planned
Closed as not planned
Copy link
@nicojs

Description

@nicojs
Issue body actions

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

My proposal is suitable for this project

  • My proposal specifically checks TypeScript syntax, or it proposes a check that requires type information to be accurate.
  • My proposal is not a "formatting rule"; meaning it does not just enforce how code is formatted (whitespace, brace placement, etc).
  • I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).

Description

I would love a rule that forces users to use private class members over using the private keyword.

Private class members have been added in ES 2022 and are supported in most major browsers as well as Node 14 and up. Time for libraries to migrate.

Fail Cases

class Foo {
   // Error
   private bar = 0;
  
  // Error
  constructor(private baz: number){} 
 
  // Error
  private toString(): string {
    return '';
  }
}

Pass Cases

class Foo {
   #bar = 0;
  
  #baz: number;
  constructor(baz: number) {
    this.#baz = baz;
  } 
 
  // Error
  #toString(): string {
    return '';
  }
}

Additional Info

This might be auto-fixable, that would be sweet! But it might make it very difficult.

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already existsThis issue or pull request already existspackage: eslint-pluginIssues related to @typescript-eslint/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

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.