内容は公式ページとだいたい同じなので、そちらも参照のこと。 http://www.typescriptlang.org/Handbook
クラスの定義
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です
継承
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です
アクセス修飾子
アクセス修飾子は「public」と「private」がある。省略したときはpublicが採用される。 publicはどこからでもアクセス可能で、privateはそのクラスの中からのみアクセス可能。privateを指定すると継承したクラスからもアクセスできない。たとえば上の例で
private prm1:number;
とすると、継承したクラスでprm1にアクセスしているため、エラーが発生する。
引数のアクセス修飾子
アクセス修飾子をコンストラクタの引数で使うとクラスプロパティの初期化のシンタックスシュガーとなる。つまり
class TestClass{ constructor(public prm1:number){ } }
と
class TestClass{ prm1:number; constructor(arg:number){ this.prm1 = arg; }
は同じである。ただしコンストラクタ以外の引数でアクセス修飾子は使えない。
アクセサー
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です
ぺージ情報 | |
---|---|
ぺージ名 : | TypeScriptのClass |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
Counter: 1840,
today: 1,
yesterday: 0
初版日時: 2016-03-10 (木) 10:05:17
最終更新: 2016-03-12 (土) 12:05:08 (JST) (2928d) by njf