提问人:Adam Arold 提问时间:8/27/2023 最后编辑:Adam Arold 更新时间:8/27/2023 访问量:45
使用 Typescript 时,如何用额外的功能来增强第三方模块?
How to augment 3rd party modules with extra functions when using Typescript?
问:
我已将一个模块导入到我正在处理的实用程序库中,目的是对其进行扩充和重新导出:
import * as ITE from "fp-ts/lib/TaskEither";
const foo = () => "foo";
export const TE = {
...ITE,
foo
};
这非常有效,因为我可以导入其他模块中的内容和从其他模块中导入的内容。问题是导入的模块()还声明了一个接口(),该接口()不知何故没有进入导出,因此当我在其他地方导入时,我看不到.ITE
foo
ITE
TaskEither
TE
TE.TaskEither
这有点出乎意料,因为在进行此增强之前,我是这样导出整个模块的:
export * as TE from "fp-ts/lib/TaskEither";
使 VS Code 能够为我自动导入。我现在做错了什么?有没有办法不仅可以从 中导出 s,还可以从 中导出缺失的 s?TE
export
const
ITE
interface
如果我只是重新添加
export * as TE from "fp-ts/lib/TaskEither";
它失败了,因为它与我的本地声明 .TE
答:
0赞
Adam Arold
8/27/2023
#1
Typescript 允许导出具有相同名称的 a(合并声明),因此解决方案是将具有相同名称的 a 添加到有问题的命名空间中:namespace
type
import * as ITE from "fp-ts/lib/TaskEither";
const foo = () => "foo";
export const TE = {
...ITE,
foo
};
export namespace TE {
export type TaskEither<E, A> = ITE.TaskEither<E, A>;
}
评论
export * from "fp-ts/lib/TaskEither";
TE
TE
TE.
interface