在超类中使用继承类的类型

时间:2017-03-16 19:59:54

标签: typescript typescript2.1

考虑以下代码......:

class Car {
    public static createInstance():Car {
        return new this();
    }
}

class Ferrari extends Car {
    fast:boolean = true;
}

class AutoCycle extends Car {
    slow:boolean = true;
}

let myCar:Ferrari = Ferrari.createInstance();

...这会给我错误Type 'Car' is not assignable to type 'Ferrari',并提供以下说明:Property 'fast' is missing in type 'Car'

当然,我可以通过在let myCar之后跳过类型或省略createInstance的返回类型来防止此错误。另一个选择是在作业中进行类型转换。

但使用类型脚本的乐趣在哪里,如果我必须避免正确使用类型? ; - )

因此我的问题:有没有办法做类似

的事情
public static createInstance():this { //...

this在我的示例中由Ferrari在内部自动替换?

0 个答案:

没有答案