导入打字稿文件的 commonjs 模块的类型是什么?
What is the type of a commonjs module imported into a typescript file?
我正在 Typescript 源中导入 CommonJS 模块。结果,我收到了一个包含模块导出功能的对象。
在我的具体用例中,NodeJS 的 fs
模块的声明将导出声明为 (typescript-) 模块,而不是类型。我需要该模块的接口声明,以便我可以在不丢失类型信息或扩展模块的情况下传递模块对象。
这是我想要做的:
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(...);
}
我正在 Typescript 源中导入 CommonJS 模块。结果,我收到了一个包含模块导出功能的对象。
在我的具体用例中,NodeJS 的 fs
模块的声明将导出声明为 (typescript-) 模块,而不是类型。我需要该模块的接口声明,以便我可以在不丢失类型信息或扩展模块的情况下传递模块对象。
这是我想要做的:
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(...);
}