相关疑难解决方法(0)

有没有办法"提取"TypeScript接口属性的类型?

假设库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声明一个冗余变量.我正在寻找一种方法来实现这个没有这个声明.

typing typescript definitelytyped

53
推荐指数
4
解决办法
2万
查看次数

打字稿:声明与另一个类型相同的变量

有没有办法用另一个变量的类型声明一个变量?例如,我声明了一个具有某种类型的类成员,然后我想在同一类型的函数中声明另一个变量。但我不想修改原始声明,也不想复制它。似乎您应该能够执行以下操作:

class Foo {
    bar: {[key: string]: string[]};

    func() {
        const x: TypeOf<Foo.bar> = {};
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

我听说过专门针对函数返回类型的类似内容,但我再也找不到了...

typescript

6
推荐指数
1
解决办法
1407
查看次数

标签 统计

typescript ×2

definitelytyped ×1

typing ×1