TypeScript:将实现的类分配给键入为基类

时间:2016-11-17 16:45:38

标签: inheritance typescript

我想创建一个其他类将实现和/或扩展的基类。派生类正在执行此操作,因为它们共享许多相同的功能,但有时在它的一部分上有自己的旋转。

abstract class Human {
    constructor(protected _name:string) {
    }

    protected identify():string {
        return this._name;
    }

    abstract doTrick():void;
}

class Boy extends Human {
    private jump():void {
        console.log("jumping");
    }

    private doTrick():void {
        this.jump();
    }
}

这很好用。可以创建Boy,并根据Humanidentify()发生时所说的内容来说出他的名字。问题出现在这里:

var person:Human = new Boy("Bob");

我想这样做,因为我有各种Human派生类,我不想做var person:Boy|Girl|Man|Child|Dinosaur|Whatever。问题是,这样做会导致error TS2322: Type 'Boy' is not assignable to type 'Human'

我觉得我应该可以将person键入为Human,即使我已将派生的Boy类分配给它,因为Boy类只是Human类的实现。

我错过了什么?

0 个答案:

没有答案