如何在Typescript

时间:2018-12-03 01:18:15

标签: node.js typescript

我对打字稿还不太熟悉,但我认为这个问题实际上与Node间接相关。无论如何,我正在尝试编写一个小节点库,并且正在使用Typescript。 我有一堂课,可以这样说:

    //foo.ts
    export class Foo {
        constructor(options:Options = {}) { ... }
    }

但是鉴于我的lib的本性,大多数时候直接使用此类并不理想,因此我也导出了一个模块

    //module.ts
    import { Foo } from './foo'

    let instance
    ... // other methods
    export function init(options: Options) {
        instance = new Foo(options)
    }

一切正常。我的问题是为module.ts编写单元测试。我需要编写几个测试用例,但是一旦我调用module.init(options),就将创建该实例,并将其作为节点缓存模块,再次将其导入测试文件中仍具有foo实例。在香草javascript中,我使用了proxyquire来生成模块的其他实例,但是看来它与Typescript的配合效果不是很好。我如何“强制”节点“重新导入”“我的模块的“干净”实例?

1 个答案:

答案 0 :(得分:0)

  

如何“强制”节点“重新导入”模块的“干净”实例?

一种简单的工厂方法,例如更改

//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);
}