Type Script類

1997 ワード

継承と多角形
以前のJavaScriptは原型継承に基づいて多重化可能な「クラス」を実現しましたが、Type Scriptは本当に実現したクラスで、本当に対象に向けたプログラミング思想が使えます.
class Animal {
    name:string;
    // Animal      
    constructor(theName: string) { this.name = theName; }
    move(meters: number = 0) {
        console.info(this.name + " moved " + meters + "m.");
    }
}
//   
class Snake extends Animal {
    constructor(name: string) { super(name); }
    move(meters = 5) {
        console.info("Slithering...");
        super.move(meters);
    }
}
class Horse extends Animal {
    constructor(name: string) { super(name); }
    move(meters = 45) {
        console.info("Galloping...");
    }
}
let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino"); 
sam.move();
tom.move(34);
Horse類はAnimal類を継承し、move方法を書き換えました.このようにmove()方法は異なる種類の中で異なる機能を持っています.これは多状態です.派生クラスのコンストラクタはsuper()を呼び出す必要があり、ベースクラスの構造方法を実行します.
修飾子
クラスの中の修飾子はpublic、prvate、protectedの3種類があります.
class Animal {
    public name:string; //       
    protected height:number; //        
    private weight:number; //    Animal   
    // Animal      
    constructor(theName: string) { this.name = theName; }
    move(meters: number = 0) {
        console.info(this.name + " moved " + meters + "m.");
    }
}
パラメータのプロパティ
以下の例では、構造関数のパラメータをprotected theName: stringを使用して定義することができます.
class Animal {
    static type = {run:0, jump:1};  //       
    name:string;
    // Animal      
    constructor(protected theName: string) { this.name = theName; }
    move(meters: number = 0) {
        console.info(this.name + " moved " + meters + "m.");
    }
}
抽象類
**    ,          ,             。**
abstract class Animal {
    abstrack eat():void; //          
    move(meters: number = 0) {
        console.info(this.name + " moved " + meters + "m.");
    }
}