TypeScriptでのクラス操作の基本

TypeScriptでのクラス操作の基本についてまとめています。

※目次をクリックすると目次の下部にコンテンツが表示されます。

JavaScriptでのオブジェクトの操作
1)オブジェクトの生成例
 
var myData = new Object();
myData.name = “・・・”;
myData.address = “・・・”;
 
2)オブジェクトリテラル
 
オブジェクトとそのプロパティをオブジェクトリテラルの書式を使って定義出来る。
下記のように波括弧で囲んで記述する。

var myData = {
  name: "・・・",
  address: "・・・"
};

 
3)関数をメソッドとして使用
 
関数をオブジェクトに追加する事ができ、オブジェクト上で定義された関数をメソッドと呼ぶ。

var myData = {
  name: "Adam",
  address: "sunny",
  printMsg: function() {
    console.log("ようこそ!" + this.name + "さん。");
  }
};

・メソッドからオブジェクトで定義されたプロパティにアクセスする場合は、thisキーワードを使用しなければならない。
 
4)オブジェクトのプロパティへのアクセス
 
①方法1
myData.name = “・・・”;
 
②方法2
myData[“name”] = “青木”;
 
5)オプジェクト内のプロパティにループ処理でアクセス
 

for (var pt in myData) {
  console.log("プロパティ名:" + pt + "プロパティ値: " + myData[pt]);
}

TypeScriptでのクラスの操作
1)コンストラクタ
 
・TypeScriptのすべてのクラスは、明示的に記述するしないかどうかに関わらず、コンストラクタを持つ。
明示的に記述していない場合は、コンパイラが自動で追加する。
 
〇アクセス修飾子
・アクセス修飾子を使ってクラス内の属性とメソッドのアクセス権(visibility)を制御する事ができる。
・属性とメソッドのデフォルトのアクセス権はpublicなので、明示的にpublicを指定する必要はない。
・アクセス権をクラス内のみに制限したい場合は、privateを指定する。
この場合、サブクラスからもそのメンバにアクセスできない。
 
例1)

export class Member1 {
  id: number;
  name: string;
  constructor(id: number, name: string) {
    this.id = id;
    this.name = name;
  }
}

 
〇コンストラクタの簡略化した記述
・コンストラクタのパラメータは、メンバー変数にマップしていない。
コンストラクタのパラメータにprivateなどのアクセス修飾子を指定すると自動でマップされる。
 
例2)上記例1)を簡略化した定義

export class Member2 {
  constructor(public id: number, public name: string) {}
}

 
2)属性へのアクセス
 
JavaScriptのオブジェクトと同様。
 
例)

export class Member2 {
  constructor(public id: number, public name: string) {}
}

var member2: Member2 = new Member2(11, '相田');
console.log("id2: " + member2.id + ",name2: " + member2.name);
console.log("ID2: " + member2["id"] + ",NAME2: " + member2["name"]);

 
3)アクセサメソッド
 
・”get”、”set”のプレフィックスをつけてメソッドを定義
例)

export class Member3 {
  private _id: number;
  private _name: string;
  constructor(id: number, name: string) {
    this._id = id;
    this._name = name;
  }
  get id() {
    return this._id;
  }
  set id(id: number) {
    this._id = id;
  }
}

var member3: Member3 = new Member3(11, '相田');
console.log("id3: " + member3.id);
→id3: 11
console.log("name3: " + member3._name);
→コンパイル時にエラー
error TS2341: Property '_name' is private and only accessible within class 'Member3'.

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です