TypeScript和Kinetic .on点击错误

时间:2013-05-10 13:04:37

标签: typescript kineticjs

我在使用TypeScript并在Kinectic.Text上使用click事件时遇到错误。

这是我的文字:

var myButton = new Kinetic.Text({
    // set properties here...
});

以下是问题代码:

myButton.on('click', function () {
    if (page > 1) {
        renderPage(--page);
        updateButtons();
    }
});

这部分代码加下划线说:

  

提供的参数与呼叫目标的任何签名都不匹配:呼叫类型'()=>的签名void'和'()=> {}'不兼容

带下划线的代码是:

function () {
    if (page > 1) {
        renderPage(--page);
        updateButtons();
    }
});

我查看了Konctic.d.ts的.on:

on(typesStr: string, handler: () =>{ }): void;

我在函数之后放了一个:void:

myButton.on('click', function ():  void {
    // same code there
});

但现在我的onButton问题出现了问题。

此错误是:

Supplied parameters do not match any signature of call target: Call signatures of types '() => void' and '() => {}' are incompatible

导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

快速修复:

myButton.on('click', function () {
    if (page > 1) {
        renderPage(--page);
        updateButtons();
    }
    return {}; // Add this line
});

说明: 的 原因是处理程序签名:

handler: () =>{ }

与以下函数的签名(()=>void

不兼容
function () {
    if (page > 1) {
        renderPage(--page);
        updateButtons();
    }
}

因为它什么也没有返回,编译器已经弄明白了(第一个错误)。做:

myButton.on('click', function ():  void {
    // same code there
});

没有任何帮助,因为您重申了编译器已经推断出的内容(第二个错误)。

返回一个空对象以使签名兼容。正如我在快速修复中所示。