2017-07-20 13 views
3

enter image description here 私は、このようなSpread演算子を使用しているときのTypeScriptエラー?

public drawTextTest(p1: number, p2: number, p3: number):void { 
    console.log(p1, p2, p3); 
} 
let array = [2, 2, 5]; 
this.drawTextTest(... array); 

以下のように広がり演算子を使用するたびに、私は編集者

にこのエラーが出る[TS]期待#引数が、0

の最小値を得ました

引数を渡すために拡散演算子を使用しているとき、なぜ活字体はエラーを与えるのでしょうか?私は実際にコードを実行してエラーがありません

、スプレッドオペレータは、単に私ができなかったかのようにそれは私にエラーを示しVSCodeではまだ関数の引数として配列を使用させて頂いております。

+2

を参照としてマークされている場合にのみ機能しますスクリーンショットではなくコードを貼り付けることをお勧めします。 –

+0

コンパイル時にコードが正常に実行されますが、エディタにいる間だけエラーが発生します。 – LatteDrift

+2

vscodeのtslibバージョンが古く、タプルを推論できません –

答えて

0

Vscodeコードを評価する前に、2.1 typescriptですのバージョンを使用することができます。 IDEウィンドウの右下にあるバージョンを再確認してください。

私はそのことについて間違っている場合は、私はあなたのdrawInfoオブジェクトの定義を参照する必要があります。 2番目の推測では、drawInfoにオプションのプロパティがあり、評価者はスプレッドが0のパラメータになる可能性を見ています。

EDIT:drawInfoは配列のように見えます。配列の長さを変更することができ、3つのプロパティがあることを保証するものはないので、tsエバリュエーターは不平を言うでしょう。

drawInfoは常に3つの値が含まれます場合は、定義された型に配列からそれを変更し、拡散演算子を避けたいことがあります。活字体の

+0

VSCodeがTypeScript 2.4.2で実行されています。私はまだ私がエラーを取得した例を更新しました – LatteDrift

2

新しいバージョンフロー分析を介してこれを考え出すべきであるが、手動分の長さを確保するために、次のように配列を入力することで動作するコードを得ることができる必要があります:

function drawTextTest(p1: number, p2: number, p3: number):void { 
    console.log(p1, p2, p3); 
} 
let array: [number, number, number] = [2, 2, 5]; 
this.drawTextTest(... array); 
+1

これは私が思った行に沿っていますが、TSは同じエラーを返します – LatteDrift

関連する問題