I have a simple problem with my TS callbacks.
I have a function like this
...
//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
Note: (70,41) is the function call for refreshConnection. Commenting it out fixes the problem
Similar to JavaScript, to pass a function as a parameter in TypeScript, define a function expecting a parameter that will receive the callback function, then trigger the callback function inside the parent function.
TypeScript provides a Optional parameters feature. By using Optional parameters featuers, we can declare some paramters in the function optional, so that client need not required to pass value to optional parameters.
In Typescript, making optional parameters is done by appending the “?” at the end of the parameter name in the function when declaring the parameters and the parameters which are not marked with “?” i.e not optional parameter are called as default parameters or normal parameters where it is must and compulsory to pass ...
In JavaScript, callbacks and anonymous functions can be used interchangeably.
This snippet seems to be working fine:
class MyClass {
public refreshConnection(callback?: Function) {
if (callback) {
callback();
}
}
}
let obj = new MyClass();
obj.refreshConnection(() => { console.log('It works!'); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With