我在使用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
导致此错误的原因是什么?
答案 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
});
没有任何帮助,因为您重申了编译器已经推断出的内容(第二个错误)。
返回一个空对象以使签名兼容。正如我在快速修复中所示。