2015-01-10 6 views
7

ich in meinem Typescript den folgenden Typ bin mit:Typoskript: Referenz Subtyp der Typdefinition (Schnittstelle)

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

Nun würde Ich mag eine Variable erstellen, die als Attribut des gleichen Typs ist vocabulary, versuchen Sie folgendes:

var vocabs : ExerciseData.vocabulary[]; 

Aber das funktioniert nicht. Kann man irgendwie auf einen Subtyp verweisen? Oder müsste ich so etwas tun?

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

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

var vocabs : Vocabulary[]; 

Vielen Dank für Hinweise.

+0

Sie richtig sind. Sie sollten tun, was Sie im letzten Codeblock getan haben. –

+0

Vielen Dank @WayneEllery - also würden Sie sagen, das ist definitiv nicht möglich? –

+0

Ja. Du solltest deine Typen sowieso deklarieren. –

Antwort

2

Nicht genau das, was Sie wollen, aber Sie können dies mit dem typof-Schlüsselwort hacken, aber nur, wenn Sie eine var haben, die als Ihr Interface-Typ wie unten deklariert ist. Beachten Sie, dass ich denke, was Sie getan haben in Ihrem letzten Codeblock viel besser ist :)

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

Hmmm, das ist in der Tat eine ziemlich interessante Möglichkeit - obwohl nicht ganz das, wonach ich gesucht habe. Danke für das Erwähnen. –

4

Seit Typoskript 2.1 Sie tun können, die folgenden mit Lookup-Typen:

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

Jeder Weg, dies dynamisch zu tun? Wie in JS Übungsdaten [xxx] [] – xperiments

Verwandte Themen