导入打字稿文件的 commonjs 模块是什么类型?



我正在打字稿源中导入一个CommonJS模块。结果,我收到一个包含模块导出功能的对象。

在我的具体用例中,NodeJS的fs模块的声明将导出声明为(打字稿-(模块,而不是类型。我需要该模块的接口声明,以便我可以在不丢失类型信息的情况下传递模块对象或扩展模块。

这是我想做的:

import * as fs from "fs";
doSomethingWithFs(fsParameter: InstanceType<fs>) {
...
}

这导致

TS2709: Cannot use namespace 'fs' as a type.

有没有办法从模块声明中获取类型(除了手动重构类型(?

编辑: @Skovy的解决方案非常有效:

import * as fs from "fs";
export type IFS = typeof fs;
// IFS can now be used as if it were declared as interface:
export interface A extends IFS { ... }

谢谢!

你试过typeof吗?

import * as fs from "fs";
function doSomethingWithFs(fsParameter: typeof fs) {
fsParameter.readFile(...);
}

相关内容

  • 没有找到相关文章

最新更新