Ad

内容は公式ページとだいたい同じなので、そちらも参照のこと。 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

Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1494, today: 2, yesterday: 0
Princeps date: 2016-03-10 (Thu) 10:05:17
Last-modified: 2016-03-12 (Sat) 12:05:08 (JST) (2346d) by njf
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF