【发布时间】:2017-10-02 22:18:18
【问题描述】:
我一直是lookingaround,这个问题似乎是recurring thing。但是,我发现的解决方案似乎都不适合我。
使用以下内容:
{
"typescript": "2.3.2",
"jasmine-core": "2.6.1",
"@types/jasmine": "2.5.47"
}
我无法让 Typescript 合并包含我的自定义匹配器定义的命名空间声明。
添加这个:
declare namespace jasmine {
interface Matchers<T> {
toBeAnyOf(expected: jasmine.Expected<T>, expectationFailOutput?: any): boolean;
}
}
隐藏之前在jasmine 上声明的所有其他类型。编译器输出错误如:
[ts] Namespace 'jasmine' has no exported member 'CustomMatcherFactories'
[ts] Namespace 'jasmine' has no exported member 'CustomMatcher'.
有没有合适的方法来添加自定义匹配器并使其与 Typescript 很好地配合?
如果您使用的是tslint:recommended 规则集,tslint 会出现额外问题。这些规则不允许使用 namespace 或 module 关键字,所以我必须禁用 linter(或更改 "no-namespace" 规则)才能尝试这一点。如果“不推荐”,不确定如何绕过扩展定义。
【问题讨论】:
-
下面的答案最终解决了您的问题 Nicolas 还是您做了其他事情?
-
@hornairs 这发生在不久前,但我似乎记得它没有。最后,我放弃了并使用已经可用的匹配器重新编写了我的测试。
标签: javascript angular typescript types jasmine