将项目投射到"这个"在静态方法中

时间:2017-12-11 20:52:47

标签: typescript

有没有办法告诉TypeScript静态方法返回一个调用方法的对象?

我有这个基类:

export default class model {
  public static create() {
    let t = new this() as this
    // set extra information here
    return t
  }
}

然后我像这样扩展这个类:

export default class purchases extends model { /* extra methods */ }

然后我这样称呼它:

let p = purchases.create({ my: 'options' })

然后TypeScript告诉我p的类型为model,实际上它应该是purchases类型。

当我将t投放到this或说public static create(): this时,我收到此错误:

  

A'这个' type仅在类或接口的非静态成员中可用。

我该怎么说#34;这个静态方法返回一个调用它的对象实例"?

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是转发实例

class model {
  public static create() {
    let t = new this();
    // set extra information here
    return t;
  }
}

class purchases extends model { /* extra methods */ }

let p = purchases.create() as purchases; // downcast