Revision 8e13c351acb8087f5a101d70bd7f9f9aebbdc1bc authored by JoostK on 21 September 2021, 21:39:11 UTC, committed by Jessica Janiuk on 26 October 2021, 18:22:33 UTC
The `ErrorCode` enum in the `error_code.ts` file is governed by public
api guards but the other top-level exports from that file are exempt
from public api documentation and are therefore marked as `@internal`.
However, TypeScript is configured with the `stripInternal` compiler
option such that declarations with `@internal` markers are not emitted
into the `.d.ts` files, but this means that the reexports in the barrel
file end up referring to missing declarations.

The `stripInternal` option is considered internal and its documentation
states to use at your own risk (as per https://github.com/microsoft/TypeScript/issues/45307).
Having the option enabled is desirable for us as it works well for
hiding class fields that are marked `@internal`, which is an effective
way to hide members from the .d.ts file. As a workaround for the issue
with top-level symbols, the declarations with `@internal` markers are
moved to dedicated files for which no public api guard is setup,
therefore allowing their `@internal` markers to be dropped.

Fixes #43097

PR Close #43527
1 parent 59e56e7
Raw File
tsconfig-legacy-saucelabs.json
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "target": "ES5",
    "module": "commonjs",
    // The project uses Bazel for TypeScript compilation. Unlike with Bazel, we build all
    // sources as part of a single TypeScript compilation. This results in `@internal`
    // declarations not being omitted between the logical as defined per the Bazel targets.
    // This can cause issues where the `override` keyword is needed for the legacy TS
    // compilation, but not within Bazel where the overridden member has `@internal`.
    "noImplicitOverride": false
  }
}
back to top