2017-01-12 2 views
0

J'ai un problème simple avec mes rappels TS.Le paramètre de rappel facultatif de TypeScript ne correspond pas à la fonction anonyme qui lui a été transmise

J'ai une fonction comme celle

... 
//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) est l'appel de fonction pour refreshConnection. Commentant dehors résout le problème

+0

I [ne peut pas reproduire] (http://www.typescriptlang.org/play/#src=function%20refreshConnection (callback% 3F% 3AFunction)% 20% 7B% 0D% 0A% 20% 20% 20% 20 % 2F% 2Fdo% 20Quelque chose% 0D% 0A% 20% 20% 20% 20% 2F% 2Fthen% 20call% 20the% 20passed% 20callback% 20avec% 20no% 20params% 0D% 0A% 20% 20% 20% 20callback() % 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). Pourriez-vous essayer d'utiliser ce site pour reproduire votre erreur, puis [modifier] votre question pour ajouter le lien? –

+0

Utilisez-vous resharper? Je reçois tellement d'erreurs incorrectes comme celle-ci avec resharper ... c'est ridicule. Je navigue parfois dans des fichiers avec une mer de rouge. –

+0

Je n'utilise pas resharper, du moins pas sciemment. Le projet est une application Angular 2, et je la compile en utilisant l'outil "ng build" ... qui à son tour utilise webpack. J'ai ajouté le code d'erreur à la publication d'origine. Note: quand je commente l'appel de fonction, tout fonctionne bien. J'ai également essayé de vider la fonction (ayant une fonction vide qui ne fait rien.) Je pense que le compilateur peut me donner un mauvais numéro de ligne. –

Répondre

0

Cet extrait seems to be working fin:

class MyClass { 

    public refreshConnection(callback?: Function) { 

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

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

Pouvez-vous partager plus de votre code dans une aire de jeux TS?