Необязательный параметр обратного вызова TypeScript не соответствует переданной ему анонимной функции

У меня есть простая проблема с моими обратными вызовами 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. Комментирование устраняет проблему

1 ответ

  1. Этот фрагмент, кажется, работает нормально:

    class MyClass {
    
        public refreshConnection(callback?: Function) {
    
            if (callback) {
                callback();
            }
        }
    }
    
    let obj = new MyClass();
    obj.refreshConnection(() => { console.log('It works!'); });
    

    Можете ли вы поделиться большим количеством кода на игровой площадке TS?