我最近升级到了TypeScript 0.9.5,编译时出现了新的错误。
我正在使用RequireJS定义一个AMD模块,如此处所述。
define('myModule', [
'angular',
'config'
], function (angular, config) {
'use strict';
...
});
RequireJS的TypeScript定义文件中, RequireDefine
的定义如下:
/**
* Define a module with a name and dependencies.
* @param name The name of the module.
* @param deps List of dependencies module IDs.
* @param ready Callback function when the dependencies are loaded.
* callback deps module dependencies
* callback return module definition
**/
(name: string, deps: string[], ready: (...deps: any[]) => any): void;
然而,我遇到了以下错误:
error TS2082: Build: Supplied parameters do not match any signature of call target:
error TS2087: Build: Could not select overload for 'call' expression.
智能感知错误显示:
调用类型“(angular:any, config:any) => any”和“(...deps: any[]) => any”的签名不兼容。
定义文件是否不正确?在回调参数方面我犯了什么错误?
进一步信息:
将声明更改为以下内容,现在可以编译。
define('myModule', [
'angular',
'config'
], function (...args:any[]) {
'use strict';
...
});
然而,转向单个参数对象肯定是一种倒退吗?这是定义文件还是TypeScript编译器的限制?
Func
和Action
,它们都被广泛使用,投诉水平也很低。你是否真的有超过31个约束条件的模块?就像我说的-我同意这是有问题的,但我认为它也非常实用。 - Benjamin Gruenbaum