Microsoft/TypeScript

Class member incorrectly stripped from .d.ts output if @internal is mentioned in unrelated comment

Open

#57.352 aperta il 9 feb 2024

Vedi su GitHub
 (6 commenti) (2 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
Domain: Declaration EmitHelp WantedPossible Improvement

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 6g 17h) (9 PR mergiate in 30 g)

Descrizione

🔎 Search Terms

internal, .d.ts, stripInternal

🕗 Version & Regression Information

This issue appears to be present in all version of TypeScript (tested down to 3.3.3).

⏯ Playground Link

https://www.typescriptlang.org/play?stripInternal=true&ts=5.3.3#code/KYDwDg9gTgLgBAYwDYEMDOa4DEITgbwCg44B6AKnOJPLgGUALCAVyQBM4AjYONGKAJZgwwNtTi0AAgIB2MYFBkok48qWpomrNgCFgdfkJEcAvHACMAbkLVSpOABUA8gBEnALjgBbFAE9u3igA1jwwDAKY0nIKSkgA-LaUqvRa7BIyEDC0AXyCwqKq6iSaLOwAcpl6BnnGcGYATNYAvkA

💻 Code

export class Foo {
  /**
   * Should be stripped
   * @internal
   */
  shouldBeStripped = 1;

  // TODO: maybe make this @internal?
  /**
   * Should *not* be stripped
   */
  shouldNotBeStripped = 2;
}

🙁 Actual behavior

The compiler should preserve the Foo.shouldNotBeStripped property while removing Foo.shouldBeStripped.

🙂 Expected behavior

Both Foo.shouldNotBeStripped and Foo.shouldBeStripped are removed.

Additional information about the issue

If a class member has an unrelated comment mentioning @internal preceding it, TypeScript will drop that member from the .d.ts output, even though that's not the intent since there's another comment after it. Only the first comment should be checked for @internal.

Guida contributor