如何在打字稿中实现工厂方法?

时间:2018-09-05 08:46:50

标签: typescript

我的代码:

class Model {}

class Loader {
    static load<M extends Model>(ModelClass: typeof Model): M {
        return new ModelClass();
    }
}

错误消息:Type 'Model' is not assignable to type 'M'.

链接到游乐场:goo.gl/qrSsoX

1 个答案:

答案 0 :(得分:1)

我们应该说load将类作为参数而不是实例。

export interface Type<T> extends Function { new (...args: any[]): T; }

class Model {}

class Loader {
    static load<M extends Model>(ModelClass: Type<M>): M {
        return new ModelClass();
    }
}

有关更多信息,请查看this答案