在类中调用的新类实例 -

时间:2016-07-29 20:55:21

标签: javascript typescript

我正在尝试从Class本身的方法创建一个构造函数的新实例。在编译的JS中它可以工作,但在TS中我得到错误cannot use new with an expression whose type lacks a call or construct signature

为了解释这个问题,我将简化课程:

class Saver {

    toSave: { obj1 : Object, obj2 ?: Object };

    constructor(obj : { obj1 : Object, obj2 ?: Object }) {
        this.toSave = obj;
        return this;
    }
    prepare() {

        if(obj.obj2) new Saver(obj.obj2).save(); // here I get the error
        return this;
    }
    save() {
        // I do stuff
    }
}

var testObj = { obj1 : aFakeObject, obj2 : anotherFakeObj };
new Saver(testObj).prepare().save();

*.d.ts文件中:

export interface construct {}

export interface SaverConstruct extends construct {
    new(obj ?: { obj1 : Object, obj2 ?: Object });
}

class Saver {

    constructor();

    private prepare() : void;
    public save() : void;
}

我已经使用这个逻辑很长一段时间了,所以我非常有信心在JS中这是可能的。如何在TS中正确实现它?

0 个答案:

没有答案