如何将 npm 包中的类型添加到声明命名空间的“d.ts”文件中?

How can I add a type from an npm package into a `d.ts` file declared namespace?

我有这个 TYPES.d.ts 文件,我在其中声明了一个 TYPES 命名空间

declare namespace TYPES {

  type TYPE_A = XXX;
  type TYPE_B = YYY;

}

然后我使用的是:const someFunc = (param: TYPES.TYPE_A): void => { ... };

它工作正常。

但现在我想在 TYPES 命名空间上添加一个类型,该类型是 NPM 包中存在的类型的 return 类型。

TYPES.d.ts

import type { SomeType } from "some-npm-package";

declare namespace TYPES {
  type SOME_TYPE = ReturnType<typeof SomeType>;
}

但这会“破坏”d.ts 文件,因为 Typescript 似乎将其视为模块,而不是定义文件。

我怎样才能做到这一点并且仍然能够通过我的命名空间访问它?

刚刚找到一种方法:

TYPES.d.ts

declare namespace TYPES {
  type SOME_TYPE = ReturnType<typeof import("some-npm-package").SomeType>;
  type OTHER_TYPE = typeof import("some-npm-package").SomeType
  type FOO_TYPE = typeof import("./someFile").FooType  // ALSO WORKS WITH SRC FILES
}

这样您就可以避免“破坏”d.ts 文件声明命名空间的顶级导入。