内容は公式ページとだいたい同じなので、そちらも参照のこと。 http://www.typescriptlang.org/Handbook

クラスの定義 anchor.png Edit

TypeScriptではプロトタイプベースではない、Javaなどと同様のクラス定義が使える。 ただし、「this」は省略不可。コンストラクタはクラス名ではなく「constructor」。プロパティやメソッドの定義に「var」や「function」は不要。

class TestClass{
    prm1:number;
    
    constructor(arg:number){
        this.prm1 = arg;
    }
    showNumber():void{
        alert(this.prm1 + "です");
    }
    
}

var testClass:TestClass = new TestClass(2);

testClass.showNumber();//=>2です
Page Top

継承 anchor.png Edit

extendsを使うと継承も可能。親クラスにはsuperでアクセス。子クラスのコンストラクタは処理が同じなら省略可能。

class TestClass{
    prm1:number;
    
    constructor(arg:number){
        this.prm1 = arg;
    }
    showNumber():void{
        alert(this.prm1 + "です");
    }
    
}

class TestExtended extends TestClass{
    
    showNumber(){
        this.prm1 ++;
        super.showNumber();
    }
}


var testExtended:TestExtended = new TestExtended(2);

testExtended.showNumber(); // => 3です
Page Top

アクセス修飾子 anchor.png Edit

アクセス修飾子は「public」と「private」がある。省略したときはpublicが採用される。 publicはどこからでもアクセス可能で、privateはそのクラスの中からのみアクセス可能。privateを指定すると継承したクラスからもアクセスできない。たとえば上の例で

private prm1:number;

とすると、継承したクラスでprm1にアクセスしているため、エラーが発生する。

Page Top

引数のアクセス修飾子 anchor.png Edit

アクセス修飾子をコンストラクタの引数で使うとクラスプロパティの初期化のシンタックスシュガーとなる。つまり

class TestClass{
   
   constructor(public prm1:number){ }
   
}

class TestClass{
   prm1:number;
   
   constructor(arg:number){
       this.prm1 = arg;
}

は同じである。ただしコンストラクタ以外の引数でアクセス修飾子は使えない。

Page Top

アクセサー anchor.png Edit

getやsetといったアクセサーが使える。ただし、ECMAScript 5でないと対応していないため、コンパイル時に設定が必要。また対応していないブラウザでエラーが出るかも。

tsc -t ES5 yourfile.ts

文法は以下の通り。

class TestClass{
    private _prm1:number;
    
    get prm1():number{
        return this._prm1;
    }
    set prm1(p:number){
        this._prm1 = p;
    }
    
    
    showNumber():void{
        alert(this.prm1  + "です");
    }
    
}
var tc:TestClass = new TestClass();
tc.prm1 = 10;
tc.showNumber() // => 10です
Page Top

スタティック変数 anchor.png Edit

インスタンスではなく、クラスに属するスタティック変数を定義することもできる。

class TestClass1{
    static prm:number = 1;
    
    
    showPrm(){
        alert(TestClass1.prm);
    }
}

TestClass1.prm = 100;

var tc:TestClass1 =new TestClass1();

tc.showPrm() // => 100

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 381, today: 1, yesterday: 5
初版日時: 2016-03-10 (木) 19:05:17
最終更新: 2016-03-12 (土) 21:05:08 (JST) (557d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF