TypeScript 可选回调参数与传递给它的匿名函数不匹配
TypeScript optional callback parameter does not match anonymous function passed to it
我的 TS 回调有一个简单的问题。
我有这样的功能
...
//inside a class
//function is supposed to optionally accept any callback function
refreshConnection(callback?:Function) {
//do something
//then call the passed callback with no params
callback();
}
...
//in another component, i call this function like so
this.myclass.refreshConnection( () => {
window.location.reload();
});
//but i get an error saying that the function parameter does not match a signature.
// i also tried callback?: (...args: any[]) => any but nothing.
ERROR in ./src/app/fb_connect.component.ts
Module build failed: Error: /var/www/mysite/frontend/angular2/src/app/fb_connect.component.ts (70,41): Supplied parameters do not match any signature of call target.)
at _checkDiagnostics (/var/www/mysite/frontend/angular2/node_modules/@ngtools/webpack/src/loader.js:115:15)
at /var/www/mysite/frontend/angular2/node_modules/@ngtools/webpack/src/loader.js:140:17
@ ./src/app/app.module.ts 15:0-51
@ ./src/app/index.ts
@ ./src/main.ts
注:(70,41)是refreshConnection的函数调用。将其注释掉可以解决问题
这个片段seems to be working很好:
class MyClass {
public refreshConnection(callback?: Function) {
if (callback) {
callback();
}
}
}
let obj = new MyClass();
obj.refreshConnection(() => { console.log('It works!'); });
我的 TS 回调有一个简单的问题。
我有这样的功能
...
//inside a class
//function is supposed to optionally accept any callback function
refreshConnection(callback?:Function) {
//do something
//then call the passed callback with no params
callback();
}
...
//in another component, i call this function like so
this.myclass.refreshConnection( () => {
window.location.reload();
});
//but i get an error saying that the function parameter does not match a signature.
// i also tried callback?: (...args: any[]) => any but nothing.
ERROR in ./src/app/fb_connect.component.ts
Module build failed: Error: /var/www/mysite/frontend/angular2/src/app/fb_connect.component.ts (70,41): Supplied parameters do not match any signature of call target.)
at _checkDiagnostics (/var/www/mysite/frontend/angular2/node_modules/@ngtools/webpack/src/loader.js:115:15)
at /var/www/mysite/frontend/angular2/node_modules/@ngtools/webpack/src/loader.js:140:17
@ ./src/app/app.module.ts 15:0-51
@ ./src/app/index.ts
@ ./src/main.ts
注:(70,41)是refreshConnection的函数调用。将其注释掉可以解决问题
这个片段seems to be working很好:
class MyClass {
public refreshConnection(callback?: Function) {
if (callback) {
callback();
}
}
}
let obj = new MyClass();
obj.refreshConnection(() => { console.log('It works!'); });