考虑以下代码......:
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
在内部自动替换?