2017-01-12 8 views
0

私のTSコールバックには簡単な問題があります。TypeScriptのオプションのコールバックパラメータが、渡された匿名関数と一致しません。

私はこの

... 
//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のための関数呼び出しです。問題の修正を、それをコメントアウト

+0

[再生できません](http://www.typescriptlang.org/play/#src=function%20refreshConnection(コールバック%3F%3A機能)%20%7B%0D%0A%20%20%20%20 %2F%2Fdo%20something%0D%0A%20%20%20%20%2F%2Fthen%20call%20the%20passed%20callback%20with%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)。あなたはあなたのエラーを再現するためにそのサイトを使用しようとしますか?あなたの質問を編集してリンクを追加してください。 –

+0

resharperを使用していますか?私はresharperでこのように多くの間違ったエラーが発生...それはばかげている。私は時には赤い海でファイルを移動することがあります。 –

+0

私はresharperを少なくとも意識的に使ってはいけません。プロジェクトはAngular 2アプリで、 "ng build"ツールを使ってコンパイルします。 元の投稿にエラーコードを追加しました。注:関数呼び出しをコメントアウトすると、すべて正常に動作します。私も関数を空にしてみました(何もしない空白の関数を持っています)。 私はコンパイラが間違った行番号を与えていると思います。 –

答えて

0

このスニペットseems to be working罰金:

class MyClass { 

    public refreshConnection(callback?: Function) { 

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

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

あなたはTSの遊び場にあなたのコードの多くを共有することはできますか?

関連する問題