1: 2016-03-10 (木) 10:05:17 njf |
2: 2016-03-10 (木) 11:39:13 njf |
| | | |
| class TestClass{ | | class TestClass{ |
- | prm1:number | + | prm1:number; |
| | | |
| constructor(arg:number){ | | constructor(arg:number){ |
| | | |
| class TestClass{ | | class TestClass{ |
- | prm1:number | + | prm1:number; |
| | | |
| constructor(arg:number){ | | constructor(arg:number){ |
| testExtended.showNumber(); // => 3です | | testExtended.showNumber(); // => 3です |
| | | |
| + | *アクセス修飾子 [#e79aed65] |
| | | |
| + | アクセス修飾子は「public」と「private」がある。省略したときはpublicが採用される。 |
| + | publicはどこからでもアクセス可能で、privateはそのクラスの中からのみアクセス可能。privateを指定すると継承したクラスからもアクセスできない。たとえば上の例で |
| | | |
- | *アクセス修飾子 [#e79aed65] | + | private prm1:number; |
| + | |
| + | とすると、継承したクラスでprm1にアクセスしているため、エラーが発生する。 |
| + | |
| + | **引数のアクセス修飾子 [#y3ce730b] |
| + | |
| + | アクセス修飾子をコンストラクタの引数で使うとクラスプロパティの初期化のシンタックスシュガーとなる。つまり |
| + | |
| + | class TestClass{ |
| + | |
| + | constructor(public prm1:number){ } |
| + | |
| + | } |
| + | |
| + | と |
| + | class TestClass{ |
| + | prm1:number; |
| + | |
| + | constructor(arg:number){ |
| + | this.prm1 = arg; |
| + | } |
| + | |
| + | は同じである。ただしコンストラクタ以外の引数でアクセス修飾子は使えない。 |
| + | |
| + | *アクセサー [#haa297e3] |
| + | 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です |
| + | |
| + | |
| + | (この記事は制作中です) |