首页 > 解决方案 > 在命名空间扩充中使用模块中的类型

问题描述

我正在尝试使用 Typescript 类型扩充来扩展测试框架,即 Mocha 的Context类,这样我就可以做到:

beforeEach(function() {
    this.myMethod();
});

上游类型使用 namespace,因此修补原型并添加 .d.ts 文件,如下所示:

declare namespace Mocha {
    interface Context {
        myMethod(): string;
    }
}

当我尝试使用其他类型的增强时,麻烦就开始了。

我的代码库是用模块编写的,假设我有一个模块,例如:

export interface MyType {
//...
}

只要在命名空间扩充中使用任何导入,它就会停止工作。

如何MyType在签名中使用myMethod

我认为这样的事情并非不可想象,并且可以用于将 Moment 支持改进为仅适用于 Date 或类似的库。

标签: typescriptmocha.jstypescript-typings

解决方案


另一个解决方案不再有效。试试这个:

import { YourType } from "../src/YourType";

declare module "mocha" {
  export interface Context {
    yourField: YourType;
  }
}

推荐阅读