2016-09-15 5 views
0

'call'メソッドを使用して 'this'参照を切り替えようとすると、TypeScriptでエラーが発生します。エラーを取り除くためにこれを行うためのより正しい「正しい」方法がありますか?Function.prototype.call()メソッドを使用したときのTypeScriptエラー

ここでチュートリアルをやったときに、私はそれに遭遇しましたが、私は(このコードにそれを蒸留することができます。再現するhttp://www.angular-meteor.com/tutorials/socially/angular2/privacy-and-publish-subscribe-functionsをステップ9.10にgithubのから直接そのチュートリアルのコードを使用して、同じ問題を生じ

コード(上記のチュートリアルでは9.10)に加えて:

function testIt(): Object{ 

    return {}; 
} 

testIt.call(this); 

エラーが発生:

[ts] Supplied parameters do not match any signature of call target. 

編集:私は取得していますことに注意をこの問題は特にVisual Studio Codeなどで、すべての環境でエラーが発生することはありません。

+0

この呼び出しはどこで行いますか? 「これ」とは何ですか? – Bergi

+0

あなたは望むならリンクのチュートリアルで完全な文脈を見ることができます(それは9.10の 'Meteor.publish'呼び出しで具体的に現れています)。それは言われました - それは重要ですか? 'this'が有効なオブジェクトである限り、' .call() 'メソッドは' this'の型を受け入れるべきではありませんか?また、すべてが実行され、期待どおりに動作することに注意してください。これは、Typescriptリンターのタイプエラーのようです。 ...私はまた、私はさまざまな場所で試したことを付け加えます。これは、 'これは別のものを指します - 同じエラーに関係なく。 – WillyC

+0

私はTypescriptがメソッドの中で 'this 'の型を宣言するのに問題があったことを知っています。たぶん 'testIt'はオブジェクトに対して呼び出されないと予想される関数(メソッドではない)でしょうか? '.call(未定義)'を試してください – Bergi

答えて

0

私はVSCodeのバージョン1.5.2を使用していますが、エラーは表示されません。アップデートしてみてください。

+0

1.5.2ここでも同様ですが、OS X上です。問題が残っています。コードヒントは、呼び出される関数のパラメータが続く最初のパラメータとしてオブジェクトを受け取る 'call'メソッドではなく、呼び出される関数のシグネチャを期待していることを意味します。 – WillyC

関連する問題