2017-01-12 4 views
0

Ich habe ein einfaches Problem mit meinen TS-Callbacks.TypeScript optional Callback-Parameter entspricht nicht anonyme Funktion übergeben

Ich habe eine Funktion wie diese

... 
//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 

Anmerkung: (70,41) ist der Funktionsaufruf für refreshConnection. Kommentiert es heraus das Problem behebt

+0

Ich [kann nicht reproduzieren] (http://www.typescriptlang.org/play/#src=function%20refreshConnection (Rückruf% 3F% 3AFunktion)% 20% 7B% 0D% 0A% 20% 20% 20% 20 % 2F% 2Fdo% 20%% 0D% 0A% 20% 20% 20% 20% 2F% 2F% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% % 3B% 0D% 0A% 7D% 0D% 0ArefreshConnection (% 20()% 20% 3D% 3E% 20% 7B% 0D% 0A% 20% 20% 20% 20window.location.reload()% 3B% 0D% 0A% 7D)% 3B% 0D% 0A). Könnten Sie versuchen, diese Site zu verwenden, um Ihren Fehler zu reproduzieren, dann bearbeiten Sie Ihre Frage, um den Link hinzuzufügen? –

+0

Verwenden Sie Nachschärfer? Ich bekomme so viele falsche Fehler wie diese mit Nachschärfen ... es ist lächerlich. Ich navigiere manchmal Dateien mit einem Meer von Rot. –

+0

Ich benutze keine Nachschärfer, zumindest nicht wissentlich. Das Projekt ist eine Angular 2 App, und ich kompiliere es mit dem "ng build" Tool ... welches wiederum webpack verwendet. Ich habe den Fehlercode zum ursprünglichen Beitrag hinzugefügt. Hinweis: Wenn ich den Funktionsaufruf auskommentiere, funktioniert alles einwandfrei. Ich habe auch versucht, die Funktion zu leeren (mit einer leeren Funktion, die nichts tut.) Ich denke, der Compiler gibt mir vielleicht eine falsche Zeilennummer. –

Antwort

0

Dieser Code-Schnipsel seems to be working fein:

class MyClass { 

    public refreshConnection(callback?: Function) { 

     if (callback) { 
      callback(); 
     } 
    } 
} 

let obj = new MyClass(); 
obj.refreshConnection(() => { console.log('It works!'); }); 

Können Sie mehr von Ihrem Code in einem TS Spielplatz teilen?