我有一个变量.
abc:number|string;
Run Code Online (Sandbox Code Playgroud)
我该如何检查其类型?我想做类似下面的事情:
if (abc.type === "number") {
// do something
}
Run Code Online (Sandbox Code Playgroud) 假设库X的打包文件包含一些接口.
interface I1 {
x: any;
}
interface I2 {
y: {
a: I1,
b: I1,
c: I1
}
z: any
}
Run Code Online (Sandbox Code Playgroud)
为了使用这个库,我需要传递一个与其完全相同的对象I2.y.我当然可以在源文件中创建相同的界面:
interface MyInterface {
a: I1,
b: I1,
c: I1
}
let myVar: MyInterface;
Run Code Online (Sandbox Code Playgroud)
但是后来我承担了使用库中的那个保持最新的负担,而且它可能非常大并导致大量代码重复.
因此,有没有办法"提取"接口的这个特定属性的类型?类似的东西let myVar: typeof I2.y(不起作用,导致"找不到名字I2"错误).提前致谢.
编辑:在TS Playground中玩了一下后,我注意到以下代码完全符合我的要求:
declare var x: I2;
let y: typeof x.y;
Run Code Online (Sandbox Code Playgroud)
但是,它需要x声明一个冗余变量.我正在寻找一种方法来实现这个没有这个声明.