2015-01-10 161 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

任何方式做這個dinamically?就像JS ExerciseData [xxx] []一樣 – xperiments