我在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 :(得分:15)
从TypeScript 2.1开始,您可以使用查找类型执行以下操作:
let vocabs: ExerciseData['vocabulary'][];
答案 1 :(得分:3)
不完全是你想要的,但你可以使用typof关键字解决这个问题,但前提是你有一个声明为你的接口类型的var,如下所示。请注意,我认为您在上一个代码块中所做的事情要好得多:)
interface ExerciseData {
id : number;
name : string;
vocabulary : {
from : string;
to : string;
}[];
}
var x: ExerciseData;
var vocabs : typeof x.vocabulary[];
答案 2 :(得分:2)
最近我发现它正在以另一种方式工作:
interface User {
avatar: string;
}
interface UserData {
someAvatar: User['avatar'];
}
如果您不想导出所有内容,则非常有用。