2016-12-11 1 views
0

typescriptです2.0.6.0typescriptですコンパイルエラー - "型の値... ...タイプによって割り出し可能ではありません"

を使用して、私は定義されたインタフェースを持っている:

interface indexesWorkData { 
    pointInTime: number; 
    numberOfIndexesWorking: number; 
} 

これが私のクラスです。

class work {   
    indexesWork: Array<indexesWorkData> = []; 

    pushRange(startTime: number, endTime: number) { 

     let indexStart = this.indexesWork.findIndex(x => x.pointInTime >= someNumber); 
     if (this.indexesWork[indexStart].pointInTime === anotherNumber) { 
      // Do stuff 
     } 
    } 
} 

私はコンパイルエラーを取得: にアクセスしようとするため 「タイプindexesWorkDataの値は[]型indexesWorkDataによって割り出し可能ではありません」]

実行時には動作し、indexStartは正しい値を持ちます。

なぜですか?

+1

あなたはコードをどのメソッドにも入れませんでした。 – Shai

+0

あなたのコードを使ってもエラーは出ません( 'someNumber'と' anotherNumber'は未定義ですが、簡単な修正です)。おそらく、新しいバージョンのタイスクリプトを試すことができますか? – drewwyatt

答えて

0

indexStartの種類について明示的にコンパイルを教えてください。

let indexStart: number = <number>this.indexesWork.findIndex(x => x.pointInTime >= someNumber); 
+0

これも機能しません。あなたが今取得するエラーは、 'indexesWorkData'を 'number'に変換できないfindIndex()メソッドにあります。 – Danielle

+0

私の答えにタイプアサーションを追加しました。アサーションで試してみてください。 – chkal

+0

@Danielle:findIndex()はanyを返します。そのため、推測される型indexStartもインデックスの変更として機能しません。 – chkal

関連する問題