TypeScript_クラス
クラス
クラス宣言
クラス宣言は下記の通りです。
コンストラクタは「constructor()」を用います。
JavaScript と同様にTypeScriptにデストラクタはありません。
class A{
constructor(){
console.log('コンストラクタ関数');
}
}
クラスのインスタンスを生成する場合はnewを使用します。
var a:A = new A();
修飾子
アクセス修飾子
クラスのプロパティ、メソッドは「private, public」を指定できます。
省略した場合は「public」となります。
class ErrorInfo {
private code: number;
private msg: string;
constructor(msg: string, code: number) {
this.msg = msg;
this.code = code;
}
public print(): void {
console.log(this.msg + ': err code = ' + this.code);
}
}
let err:ErrorInfo = new ErrorInfo('Error occured.', -1);
err.print();
static修飾子
staticを付けることでその要素はインスタンスではなく、クラス自身の要素になります。
class Info {
private static msg: string = 'static';
static print(): void {
console.log(this.msg);
}
}
Info.print();
getter/setter
クラスメンバへのアクセスとしてアクセサが用意されています。
class ErrorInfo {
private _code: number;
private _msg: string;
constructor() {
this._msg = '';
this._code = 0;
}
get msg() { return this._msg; }
set msg(val: string) {
this._msg = val;
}
}
let err:ErrorInfo = new ErrorInfo();
err.msg = 'Error occured.';
console.log(err.msg);
tscでTypeScriptをコンパイルすると下記エラーが表示されます。
error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tscのオプションでEcmaScriptのバージョンを指定するオプションがあります。
$ tsc -t ES5 source.ts
継承
継承はextendsキーワードを使用します。
class SuperClass {
constructor(private msg: string) {
console.log('SuperClass constructor');
}
public print(): void {
console.log('SuperClass method.');
console.log(this.msg);
}
}
class SubClass extends SuperClass {
constructor() {
console.log('SubClass constructor');
super('inheritance');
}
public subPrint(): void {
console.log('SubClass method.');
this.print();
}
}
let sc: SubClass = new SubClass;
sc.print();
sc.subPrint();
実行結果は下記の通りです。
SubClass constructor
SuperClass constructor
SuperClass method.
inheritance
SubClass method.
SuperClass method.
inheritance
関連ページ
- JavaScript
- TypeScript_環境設定
- TypeScript_変数
- TypeScript_制御構文
- TypeScript_関数
- TypeScript_クラス
- TypeScript_インターフェース
- TypeScript_jQueryの利用