函数接口(interface)定义0.9.5中参数的typescript变量数

标签 typescript

我有这个场景,文件是t.ts:

interface Itest{
   (event: any, ...args: any[]):any;
   }

   var t1: Itest = function (testparam) { return true;};
   var t2: Itest = function (testparam, para1) { return true; };
   var t3: Itest = function (testparam, para1, para2) { return true; };


   interface Itest2 {
     (event: any, para1,...args: any[]): any;
   }
   var t4: Itest2 = function (testparam, para1) { return true; };
   var t5: Itest2 = function (testparam, para1, para2) { return true; };

当我用 tsc 0.9.5 编译它时,我得到以下错误:

tsc --target ES5  "t.ts"  
t.ts(6,8): error TS2012: Cannot convert '(testparam: any, para1: any) => boolean' to 'Itest':
    Call signatures of types '(testparam: any, para1: any) => boolean' and 'Itest' are incompatible:
        Call signature expects 1 or fewer parameters.
t.ts(7,8): error TS2012: Cannot convert '(testparam: any, para1: any, para2: any) => boolean' to 'Itest':
    Call signatures of types '(testparam: any, para1: any, para2: any) => boolean' and 'Itest' are incompatible:
        Call signature expects 1 or fewer parameters.
t.ts(14,8): error TS2012: Cannot convert '(testparam: any, para1: any, para2: any) => boolean' to 'Itest2':
    Call signatures of types '(testparam: any, para1: any, para2: any) => boolean' and 'Itest2' are incompatible:
        Call signature expects 2 or fewer parameters.

我是不是遗漏了什么或者这个坏了?它曾经在 0.9.1.1 中工作。谢谢!

最佳答案

由于其余参数是可选的,因此您也需要在函数中将它们设为可选:

   interface Itest{
   (event: any, ...args: any[]):any;
   }

   var t1: Itest = function (testparam?) { return true;};
   var t2: Itest = function (testparam?, para1?) { return true; };
   var t3: Itest = function (testparam?, para1?, para2?) { return true; };


   interface Itest2 {
     (event: any, para1,...args: any[]): any;
   }
   var t4: Itest2 = function (testparam, para1) { return true; };
   var t5: Itest2 = function (testparam, para1, para2?) { return true; };

这是 TS0.9.5 中的新内容

关于函数接口(interface)定义0.9.5中参数的typescript变量数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504670/

相关文章:

javascript - 带有 TypeScript 的 JQWidget

angular - 使用构造函数 'Subscriber' 从对象开始将循环结构转换为 JSON

javascript - 泛型获取类名

angular - 如何在 View 初始化后运行代码并且 Promise 从 Angular 2 中的数据库返回数据

typescript - 如何为 vscode 启用严格的空检查

javascript - 尝试使用 *ngFor 循环显示数组

javascript - Angularjs中如何重写组件

javascript - 模型更改后 Angular View 不更新

node.js - 在同一文件中定义的 Sinon stub 辅助方法

javascript - 如何在没有JQuery的情况下调用Bootstrap的折叠方法