【发布时间】:2016-07-18 14:25:56
【问题描述】:
假设库 X 有一个类型文件,其中包含一些接口。
interface I1 {
x: any;
}
interface I2 {
y: {
a: I1,
b: I1,
c: I1
}
z: any
}
为了使用这个库,我需要传递一个与I2.y 完全相同类型的对象。我当然可以在我的源文件中创建相同的界面:
interface MyInterface {
a: I1,
b: I1,
c: I1
}
let myVar: MyInterface;
但是我有责任让它与库中的那个保持同步,而且它可能非常大并导致大量代码重复。
因此,有没有办法“提取”接口的这个特定属性的类型?类似于 let myVar: typeof I2.y 的内容(不起作用并导致“找不到名称 I2”错误)。
编辑:在 TS Playground 中玩了一会儿后,我注意到以下代码完全符合我的要求:
declare var x: I2;
let y: typeof x.y;
但是,它需要声明一个冗余变量x。我正在寻找一种在没有该声明的情况下实现这一目标的方法。
【问题讨论】:
-
which doesn't work - 这如何体现?您看到的实际错误消息是什么?
-
@BartekBanachewicz 已更新
标签: typescript typing definitelytyped