假设有一个针对库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
。我正在寻找一种不需要这个声明就能实现的方法。