使 @types 包在 nx 工作区中可见的最佳方法

Best way to make @types packages visible in an nx workspace

背景

我正在尝试删除 resize-observer-polyfill from an nx workspace that I'm working on because it's natively supported in the browsers that we are targeting. Once I removed the polyfill, I needed to add @types/resize-observer-browser because the workspace currently uses typescript@4.0.5 and my understanding is that TypeScript does not have a "native" type for ResizeObserver until v4.2,我很想更新到它,但不能自动取款。

问题

为了让 TypeScript 开心,看来我必须进去手动添加 "resize-observer-browser" 到单个 tsconfig compilerOptions.types 条目。起初这对我来说似乎并不那么糟糕。我刚刚更新了碰巧使用 ResizeObserver 的库的 tsconfig.lib.json 文件。但是,我很快意识到我还需要将它添加到库的 tsconfig.spec.json,以便单元测试可以 运行,然后我还需要将它添加到任何库的 tsconfig.app.json碰巧导入这些库的应用程序。

问题

在 nx 工作区中是否有更简单的方法来处理此类问题?

我认为我可以删除每个 tsconfig 文件中的默认 types 覆盖,因为这会让 TypeScript 在编译时只利用 node_modules/@types 下存在的所有内容。我不想走那条路,因为我认为默认的 nx library/app 生成器有充分的理由添加 types 覆盖(我认为这是为了强迫你明确而不是不小心得到避免从业务逻辑中意外导入测试代码)。

文档似乎不建议 @types 包这样做,但 /// <reference types="..." />(例如 /// <reference types="resize-observer-browser" />)也可用于包含类型,如果该类型仅在少数地方使用。

文档:https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html#-reference-types-