Chutzpah Typescript编译器支持...任何参数

时间:2014-05-06 11:49:35

标签: typescript chutzpah

我在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支持)

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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?)