0

我在 TeamCity 安装中使用 Chutzpah 3.2.1 命令行来执行一些 Typescript 单元测试。

尝试运行时出现此错误:

[JavaScript Tests] Error: Error in [JavaScript runtime error]:
[11:31:03][JavaScript Tests] C:/TeamCity/buildAgent/work/fd0bdc3857f5e4c1/Claims/Web/Scripts/app/search/SearchController.ts(77,16): error TS2082: Supplied parameters do not match any signature of call target:
[11:31:03][JavaScript Tests]    Call signatures of types '(event: ng.IAngularEvent, element: JQuery) => void' and '(event: ng.IAngularEvent, ...args: any[]) => any' are incompatible:

这段有问题的代码是:

 $scope.$on(EventConstants.TYPEAHEAD_SELECTED, (event: ng.IAngularEvent, suggestion: FieldTypeaheadSuggestion) => {
        this.search(false);
    });

angular.d.ts 中 $on 的定义是:

$on(name: string, listener: (event: IAngularEvent, ...args: any[]) => any): Function;

此代码在 VS2013 IDE 中编译良好(使用现在内置于 VS 中的 Typescript 支持)

我在其他地方读过一些编译器在这里抱怨的地方,因为 d.ts 的使用...args: any[]暗示参数是可选的,这与传递给$on函数的函数签名冲突,这suggestion是必需的。

但是,IDE 不介意这个问题,那么有没有办法让 Chutzpah 编译器以相同的方式运行?

4

2 回答 2

0

您应该使用 Chutzpah 的编译设置(在此处阅读:https ://chutzpah.codeplex.com/wikipage?title=Using%20the%20compile%20setting&referringTitle=Chutzpah.json%20Settings%20File )。这是在最新版本的 Chutzpah 中发布的,它允许您告诉 Chutzpah 如何将代码编译为 JS(或者它是否应该假设 JS 是在外部编译的以及在哪里可以找到它)。

这是现在使用 TypeScript 和 Chutzpah 的推荐方法。

于 2014-05-07T14:36:00.817 回答
0

在这里查看 Igorbek 的技巧https://github.com/borisyankov/DefinitelyTyped/pull/1467

这似乎更像是一个打字稿问题,而不是一个 Chutzpah 问题。

试试这个

$scope.$on(EventConstants.TYPEAHEAD_SELECTED, (event: ng.IAngularEvent, suggestion?: FieldTypeaheadSuggestion) => {
    this.search(false);
});

...args: any[]

签名需要 0、1 或更多参数。您的示例仅指定了一个参数。利用 ”?” 指定这些是可选参数,如下所示:

$scope.$on('eventName', (event: ng.IAngularEvent, arg1?, arg2?)

于 2014-05-12T22:19:08.910 回答