如何在不同路径引用类型现有声明文件?

How to reference type existing declaration file at different path?

我们正在使用一个节点包,它提供 CommonJS 和 ESM 导出以及类型。

由于一些原因,需要直接指向ESM导入模块。这行得通,但是 TypeScript 无法再在新路径上找到类型声明。

// import { SomePackage } from 'somepackage' // <- unfortunately not an option right now
import { SomePackage } from 'somepackage/dist/somepackage.esm'

Could not find a declaration file for module 'somepackage/dist/somepackage.esm'.
'somepackage/dist/somepackage.esm' implicitly has an 'any' type.
If the 'somepackage' package actually exposes this module, try adding a new declaration (.d.ts) file containing `declare module 'somepackage/dist/somepackage.esm';

我已经尝试(如类型错误提示的那样)创建一个新的类型声明文件。

declare module 'somepackage/esm/somepackage.esm'

这将消除错误,但现在此包的所有类型都导入为 any

即使导入路径不同,如何配置 TypeScript 以使用包公开的类型声明文件?

这可以通过在本地声明一个模块来实现,您可以在其中导出包。

// somepackage.d.ts
declare module 'somepackage/esm/somepackage.esm' {
  export * from 'somepackage'
}