不能对类型缺乏调用或构造签名的表达式使用'new'。

时间:2019-03-25 11:31:04

标签: javascript typescript

我找到了,但是在这种情况下它没有帮助:Cannot use 'new' with an expression whose type lacks a call or construct signature

我有类似的问题。 JavaScript具有以下内容:

public clone(data) {
    return new this.constructor({
        ...this.data,
        ...data,
    });
}

这被标记为错误:不能对类型缺少调用或构造签名的表达式使用'new'。ts(2351)

如何用TypeScript重写?

2 个答案:

答案 0 :(得分:1)

我将在此处明确禁用类型检查:

 public clone(data): ThisClass {
   return new (this.constructor as any)({
    ...this.data,
    ...data,
  });
}

答案 1 :(得分:0)

假设该类称为MyClass,

public clone(data) {
    return new MyClass({
        ...this.data,
        ...data,
    });
}

应该工作。