Skip to content

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

@crisbeto

Description

@crisbeto

πŸ”Ž 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Domain: Declaration EmitThe issue relates to the emission of d.ts filesHelp WantedYou can do thisPossible ImprovementThe current behavior isn't wrong, but it's possible to see that it might be better in some cases

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions