Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何添加Jasmine自定义matcher类型脚本定义?_Javascript_Angular_Typescript_Types_Jasmine - Fatal编程技术网

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