學習了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