Skip to content
  • Paul Gschwendtner's avatar
    refactor: add explicit types for exports relying on inferred call return type (#61312) · 810b0a7e
    Paul Gschwendtner authored
    As part of the Bazel toolchain migration we noticed that implicit types
    generated by the TypeScript compiler sometimes end up referencing types
    from other packages (i.e. cross-package imports).
    
    These imports currently work just because the Bazel `ts_library` and
    `ng_module` rules automatically inserted a `<amd-module
    name="@angular/x" />` into `.d.ts` of packages. This helped TS figure
    out how to import a given file. Notably this is custom logic that is not
    occuring in vanilla TS or Angular compilations—so we will drop this
    magic as part of the toolchain cleanup!
    
    To improve code quality and keep the existing behavior working, we are
    doing the following:
    
    - adding a lint rule that reduces the risk of such imports breaking. The
      failure scenario without the rule is that API goldens show unexpected
      diffs, and types might be duplicated in a different package!
    
    - keeping the `<amd-module` headers, but we manually insert them into
      the package entry-points. This should ensure we don't regress
      anywhere; while we also improved general safety around this above.
    
    Long-term, isolated declarations or a lint rule from eslint-typescript
    can make this even more robust.
    
    PR Close #61312
    810b0a7e