TypeScript: ссылочный подтип определения типа (интерфейс)

Я использую следующий тип в моем 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[];

большое спасибо за подсказки.

2 ответов


не совсем то, что вы хотите, но вы можете взломать это с помощью ключевого слова typof, но только если у вас есть var, который объявлен как ваш тип интерфейса, как показано ниже. Обратите внимание, что я думаю, что то, что вы сделали в своем последнем codeblock, намного лучше :)

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

поскольку TypeScript 2.1 вы можете сделать следующее, используя типы поиска:

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