我在 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 编译器以相同的方式运行?