【问题标题】:How can I add a type from an npm package into a `d.ts` file declared namespace?如何将 npm 包中的类型添加到声明命名空间的 `d.ts` 文件中?
【发布时间】:2021-04-16 08:06:46
【问题描述】:

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

declare namespace TYPES {

  type TYPE_A = XXX;
  type TYPE_B = YYY;

}

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

效果很好。

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

TYPES.d.ts

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

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

但这会“破坏”d.ts 文件,因为 Typescript 似乎认为它是一个模块,而不是定义文件。

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

【问题讨论】:

  • 它在 ts 操场上工作 typescriptlang.org/…
  • @captain-yossarian 谢谢。但问题在于import 语句。在您的示例中,只有声明的命名空间,它工作正常。

标签: typescript import namespaces .d.ts


【解决方案1】:

刚刚找到了一种方法:

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 文件声明的命名空间的顶级导入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多