typescript - 在命名空间扩充中使用模块中的类型
问题描述
我正在尝试使用 Typescript 类型扩充来扩展测试框架,即 Mocha 的Context
类,这样我就可以做到:
beforeEach(function() {
this.myMethod();
});
上游类型使用 namespace,因此修补原型并添加 .d.ts 文件,如下所示:
declare namespace Mocha {
interface Context {
myMethod(): string;
}
}
当我尝试使用其他类型的增强时,麻烦就开始了。
我的代码库是用模块编写的,假设我有一个模块,例如:
export interface MyType {
//...
}
只要在命名空间扩充中使用任何导入,它就会停止工作。
如何MyType
在签名中使用myMethod
?
我认为这样的事情并非不可想象,并且可以用于将 Moment 支持改进为仅适用于 Date 或类似的库。
解决方案
另一个解决方案不再有效。试试这个:
import { YourType } from "../src/YourType";
declare module "mocha" {
export interface Context {
yourField: YourType;
}
}
推荐阅读
- python-3.6 - 在 Anaconda Spyder 中使用 Python 3.6 中的大型机数据集
- java - Thymeleaf Spring MVC 的 UTF-8 编码问题
- excel - 在 Access 中使用 VBA 更改 Excel 单元格文本颜色
- java - 使用 java 和 Xpath 获取 xml 的所有属性
- sql - 如何修复数据库中的拼写错误 在该记录中有多个记录 还有更多记录
- python - Python Matplotlib 在后台更新绘图
- sphinx - 在 sphinx-query 中使用不同 user_weights 的字段两次
- python-3.x - 'map' 对象在 python3 中不可下标
- scala - 如何从单个字符串列 RDD 中有效地提取多列?
- linux - http:接受错误:接受tcp [::]:8080:accept4:打开的文件太多;