我对 typescript 相当陌生,但我认为这个问题实际上与 Node.js 间接相关。不管怎样,我正在尝试编写一个小型 Node 库,并且我正在使用 Typescript。 我有一个类,比方说:
//foo.ts
export class Foo {
constructor(options:Options = {}) { ... }
}
但是,考虑到我的库的性质,大多数情况下直接使用此类是不可取的,因此我还导出一个模块
//module.ts
import { Foo } from './foo'
let instance
... // other methods
export function init(options: Options) {
instance = new Foo(options)
}
一切都按我的预期进行。我遇到的问题是为 module.ts
编写单元测试。我需要编写几个测试用例,但是一旦我调用 module.init(options)
一次,实例就会被创建并作为 Node 缓存模块,在我的测试文件中再次导入它仍将具有 foo
实例。在普通的 javascript 中,我使用了 proxyquire生成模块的其他实例,但似乎它与 typescript 配合得不太好...我如何“强制” Node “重新导入”模块的“干净”实例?
最佳答案
How would I "force" node to "re-import" a "clean" instance of my module?
一个简单的工厂方法,例如改变
//foo.ts
export class Foo {
constructor(options:Options = {}) { ... }
}
致:
//foo.ts
class Foo {
constructor(options:Options = {}) { ... }
}
export const create(options: Options): Foo {
return new Foo(options);
}
关于node.js - 如何在 Typescript 中重新导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586268/