导入到typescript文件中的commonjs模块的类型是什么?
我正在Typescript源中导入CommonJS模块。因此,我收到一个包含模块导出特征的对象 在我的具体用例中,NodeJS的fs模块的声明将导出声明为typescript-module,而不是type。我需要该模块的接口声明,这样我就可以在不丢失类型信息或扩展模块的情况下传递模块对象 以下是我想做的: 从fs导入*作为fs; doSomethingWithFsfsParameter:InstanceType{ ... } 这导致导入到typescript文件中的commonjs模块的类型是什么?,typescript,import,typescript-typings,commonjs,Typescript,Import,Typescript Typings,Commonjs,我正在Typescript源中导入CommonJS模块。因此,我收到一个包含模块导出特征的对象 在我的具体用例中,NodeJS的fs模块的声明将导出声明为typescript-module,而不是type。我需要该模块的接口声明,这样我就可以在不丢失类型信息或扩展模块的情况下传递模块对象 以下是我想做的: 从fs导入*作为fs; doSomethingWithFsfsParameter:InstanceType{ ... } 这导致 TS2709: Cannot use namespace 'f
TS2709: Cannot use namespace 'fs' as a type.
除了手动重构类型之外,还有其他方法可以从模块声明中获取类型吗
编辑:
@Skovy的解决方案非常有效:
从fs导入*作为fs;
导出类型IFS=fs的类型;
//IFS现在可以像声明为接口一样使用:
导出接口A扩展IFS{…}
谢谢 你试过打字吗
从fs导入*作为fs;
函数doSomethingWithFsfsParameter:typeof fs{
fsParameter.readFile。。。;
}
不,我没有。我假设typeof fs==对象。fs的类型是什么?它实际上完成了我需要它做的大部分工作,除了接口X扩展了typeof fs{…}不起作用,这是我的代码sniplet中的一部分。第二部分也起作用,若不是…扩展了typeof fs,而是我为fs声明了一个类型别名,更新了问题。谢谢@Skovy,这真的很有帮助-