我在TypeScript中有以下类:
class CallbackTest
{
public myCallback;
public doWork(): void
{
//doing some work...
this.myCallback(); //calling callback
}
}
我像这样使用类:
var test = new CallbackTest();
test.myCallback = () => alert("done");
test.doWork();
代码可以正常工作,因此会显示一个预期的消息框。
我的问题是:是否有任何类型我可以提供我的类字段myCallback?现在,公共字段myCallback的类型是any,如上所示。如何定义回调的方法签名?或者我可以将类型设置为某种回调类型?或者这些我都不能做?我必须使用任何(隐式/显式)吗?
我尝试了类似的东西,但它不起作用(编译时错误):
public myCallback: ();
// or:
public myCallback: function;
我在网上找不到任何解释,所以希望你能帮助我。
我有点晚了,但是,在TypeScript中,你可以定义回调的类型
type MyCallback = (KeyboardEvent) => void;
使用示例:
this.addEvent(document, "keydown", (e) => {
if (e.keyCode === 1) {
e.preventDefault();
}
});
addEvent(element, eventName, callback: MyCallback) {
element.addEventListener(eventName, callback, false);
}
这个问题的答案是每个人都定义了类型或接口。我用typescript定义了函数,但没有定义类型。
您可以像下面这样定义带有回调类型参数的函数。您可以在类型本身中定义多个返回值,并返回多个数据,以逗号分隔,并从调用函数的位置使用相同的数据。
functionWithCallback = (completion: (returnData: any, someMoreData: any) => void) => {
completion(["A", "B"], 5);
}
你可以这样称呼它。
functionWithCallback((returnData: any, someMoreData: any) => {
//you can use all the data returned from the function here
}
希望这能帮助到一些人。