绕过TypeScript构造函数签名

时间:2019-09-13 23:29:38

标签: typescript

我有一个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声明不允许我直接这样做。

可以在TypeScript中实现吗?

1 个答案:

答案 0 :(得分:1)

您总是可以通过any来逃生。

这是一种快速解决方案:

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

any声明只会告诉Typescript-开发人员可以使用此变量做他们想做的任何事情。

理想的解决方案是仅更新其声明文件以反映该文件,或将其克隆到您的项目中,并使用该声明文件代替其文件。