Skip to content

Don't suggest private fields in contexts where they are out of scope #56177

Description

🔎 Search Terms

private fields suggestions

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about private fields

⏯ Playground Link

https://www.typescriptlang.org/play?#code/C4TwDgpgBAogHgQwLZgDYQJIDsCWwoC8UA3gFBQVQBmA9jQFxRYCuSARhAE4A0pAvgG5SpUJFiIU6ADI4A1tCLxkaaAB9xy9NjxDSAY1QIAzkY2ToZSlCPAEwHHqg4jS8wAoAbglTMIjBFggAJSMXj7QzmYqJORWlJwQwMycWFAAxLQ0TqlhvkJWfMJWNnYO1Jw0SG4QEioy8oyudXIQIVHoMXGUOFRQbk3oAHTOAxDVtdItQUGdXXEJSSlQNZoQ9RD5c4VzUAvJqVgQAO7tYyvm60GbFIWxFAkIACY0WKgg6ZmMLOxculZ6LxsnGYemANE4bmI1DoUD4jQmmFwwBmljmwAAFs5BhkYURMtdYfxhACsDZlgjCKdBlQKlVURQAPQMqAAFU471EOCwAHMoAAiKh8qABR7WCDQDF2KAYrgRUwIazMbnciA2HAvaGcD50fhXUhAA

💻 Code

typeExampleInit={foo: number,};typeExampleLike=Example|ExampleInit;classExample{staticisExample(value: any): value is Example{return #foo invalue;}staticfrom(exampleLike: ExampleLike): Example{if(Example.isExample(exampleLike)){returnexampleLike;}returnnewExample(exampleLike);}readonly #foo: number;constructor({ foo }: ExampleInit){this.#foo =foo;}}constexample=Example.from({// Try typing "f" and see that there is a suggestion for #foo});

🙁 Actual behavior

We get suggestions for private fields:

Screenshot from 2023-10-23 15-45-37

This is particularly annoying as the private fields tend to be suggested first, so tab-completion tends to produce broken code.

🙂 Expected behavior

The private field should not be included as a suggestion when outside the class scope where the field is defined.

Additional information about the issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions