Javascript 如何添加Jasmine自定义matcher类型脚本定义?
我去过,这个问题看起来像是一个问题。然而,我发现的所有解决方案似乎都不适合我 使用以下命令:Javascript 如何添加Jasmine自定义matcher类型脚本定义?,javascript,angular,typescript,types,jasmine,Javascript,Angular,Typescript,Types,Jasmine,我去过,这个问题看起来像是一个问题。然而,我发现的所有解决方案似乎都不适合我 使用以下命令: { "typescript": "2.3.2", "jasmine-core": "2.6.1", "@types/jasmine": "2.5.47" } 我无法让Typescript合并包含自定义匹配器定义的命名空间声明 添加以下内容: declare namespace jasmine { interface Matchers<T> { toBeAnyOf(e
{
"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;
}
}
有没有合适的方法来添加一个自定义匹配器,并使其与Typescript配合使用
如果您使用的是
tslint:recommended
ruleset,那么tslint
还有一个问题。这些规则不允许使用名称空间
或模块
关键字,因此我必须禁用linter(或更改无名称空间
规则)才能尝试此操作。如果这是“不推荐”的话,不确定如何绕过扩展定义的问题。在添加自定义匹配器时,我不得不修改三个文件。我创建了一个名为matchers.ts的文件,其中包含实际的匹配器。然后,我为matchers.ts文件向test.ts添加了一个导入。最后,我在typings.d.ts文件中添加了一个接口,其中包含我的matcher
matchers.ts(任意名称)
test.ts
import 'test/test-helpers/global/matchers'; (my relative filepath)
打字
declare module jasmine {
interface Matchers {
toContainText(text: string, message?: string): boolean;
}
}
“declare”语句可以很好地固定在spec.ts文件中。我还必须在测试文件中添加三个斜杠指令,以消除以下消息:TS2339:type“Matchers:
//
上不存在属性“toContaintText”,并将泛型类型添加到Matchers
:Matchers。[tslint]内部“module”语法已弃用,请改用“namespace”关键字。(无内部模块)为typings创建单独的文件。d.t反复访问此问题:(这有点帮助:下面的答案最终解决了你的问题Nicolas还是你做了其他事情?@hornairs这发生在不久前,但我似乎记得没有。最后,我放弃了,并使用现有的匹配器重新编写了测试。
import 'test/test-helpers/global/matchers'; (my relative filepath)
declare module jasmine {
interface Matchers {
toContainText(text: string, message?: string): boolean;
}
}