2015-01-10 7 views
7

のリファレンスサブタイプ:活字体:型定義(インターフェース)私は私のTypScriptに次のタイプを使用しています

interface ExerciseData { 
    id : number; 
    name : string; 
    vocabulary : { 
     from : string; 
     to : string; 
    }[]; 
} 

は、今私は属性vocabularyと同じタイプの変数を作成したいのですが、次のことをしよう:

var vocabs : ExerciseData.vocabulary[]; 

しかし、それは動作しません。何らかの形でサブタイプを参照することは可能ですか?それともこのようなことをしなくてはなりませんか?

interface ExerciseData { 
    id : number; 
    name : string; 
    vocabulary : Vocabulary[]; 
} 

interface Vocabulary { 
     from : string; 
     to : string; 
} 

var vocabs : Vocabulary[]; 

ありがとうございます。

+0

あなたは正しいですが。最後のコードブロックで行ったことを行う必要があります。 –

+0

ありがとう@WayneEllery - これは間違いなく可能ではないと言うでしょうか? –

+0

うん。あなたは本当にあなたのタイプをとにかく宣言すべきです。 –

答えて

2

あなたが望むものではありませんが、これをtypofキーワードでハックすることはできますが、以下のようにあなたのインターフェースタイプとして宣言されたvarがある場合に限ります。私はあなたがあなたの最後のコードブロックでやったことは多くの方だと思うことに注意してください:)

interface ExerciseData { 
    id : number; 
    name : string; 
    vocabulary : { 
     from : string; 
     to : string; 
    }[]; 
} 
var x: ExerciseData; 
var vocabs : typeof x.vocabulary[]; 
+0

ええと、それは確かに興味深い可能性がありますが、私が探していたものではありません。それを言わせていただきありがとうございます。 –

4

は活字体2.1ので、あなたが行うことができますルックアップタイプ使用して、次の

let vocabs: ExerciseData['vocabulary'][]; 
+0

これはどのような方法ですか? JS ExerciseData [xxx] []のように – xperiments

関連する問題