使用TypeScript構建實例對象

學習了ts,不能沒有一個綜合實例,這不,本身作了一個,分享下。
實例是設計一輛汽車,它有一個抽象類,抽象類再實現一個接口,先定義好枚舉學習

//檔位
enum Gear {
    First=1, Second=3, Third=5
}
//汽車顏色
enum Color {
    White, Red
}

再定義接口,定義汽車啓動,駕駛及最後的距離 以下:this

interface Drivable {
    //啓動
    start(): void;
    //駕駛
    drive(time: number, speed: Gear): boolean;
    //具體位置
    getPosition(): number
}

接着設計抽象類,實現接口通用部分,設計

abstract class Car implements Drivable {
    protected _isRunning: boolean;
    protected _distanceFromStart: number;

    constructor() {
        this._isRunning = false;
        this._distanceFromStart = 0;
    }

    public start() {
        this._isRunning = true;
    }
    abstract drive(time: number, speed: Gear): boolean;
    public getPosition(): number {
        return this._distanceFromStart;
    }
}

接着是咱們的具體實現類了,以下:code

//派生類
class Civic<T extends Color> extends Car {
    private color: Color;

    constructor(T) {
        super();
        this.color = T;
    }

    public drive(time: number, speed: Gear): boolean {
        if (this._isRunning) {
            this._distanceFromStart += time*speed;
            return true;
        }
        return false;
    }

    public getColor(): string {
        return Color[this.color]
    }
}

而後執行,以下:接口

let civic = new Civic(Color.Red);
civic.start();
civic.drive(10, Gear.First);
civic.drive(60, Gear.Third);
document.body.innerHTML = "distance:"+civic.getPosition()+',color:'+civic.getColor()

運行程序,能夠看到汽車運行的距離。
如有疑問,請加羣:654979292ci

相關文章
相關標籤/搜索