代码之家  ›  专栏  ›  技术社区  ›  vitaly-t

绕过类型脚本构造函数签名

  •  0
  • vitaly-t  · 技术社区  · 6 年前

    我有一个typescript类,它是一个javascript类的声明。javascript类有一个带一些参数的构造函数,而typescript声明缺少它(故意隐藏)。

    typescript中是否有办法解决这个问题,并在传入隐藏的javascript构造函数所期望的参数的同时创建typescript对象?

    我需要它作为一些特殊的测试模型,在一个库中解决限制,所以任何黑客都是可以接受的。


    下面是隐藏在第三方库中的javascript类:

    class InnerClass {
        constructor(param1, param2, param3) {
        }
    }
    

    下面是库公开的typescript声明:

    class InnerClass {
        // no constructor
    }
    

    我需要这样做,不知怎的:

    const a: InnerClass = new InnerClass(param1, param2, param3);
    

    也就是说,我需要一种方法来创建正确的对象,正确的typescript类型,并传入正确的构造函数参数,而typescript声明不允许我直接这样做。

    能用打字机实现吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   phsource    6 年前

    你总是有一个逃生舱 any .

    以下是一个快速解决方案:

    const a: InnerClass = new (InnerClass as any)(param1, param2, param3);
    

    这个 任何 声明只会告诉typescript-开发人员可以对这个变量做任何他们想做的事情。

    理想的解决方案是更新它们的声明文件以反映它,或者将其克隆到您的项目并使用它而不是它们的文件。

    推荐文章