非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

TypeScript:クラスを使う

   

TypeScriptにおけるクラスについてです。

JavaScriptでのクラス定義は以前書きましたが、Javaに慣れている身としては違和感を感じていました(インスタンス変数とプロパティがごっちゃになっているところとか)。一方でTypeScriptでは型定義が必要な分、クラス定義の構造がJavaにとても似ていてスッと入りました。

基本例

以下が基本例です。インスタンス変数のアクセス権をprivateにしてgetter/setterでアクセスするというJavaっぽい構造にしました。

class Person {
  private name: string;

  constructor(name: string) {
    this.name = name;
  }

  getName() : string {
    return this.name;
  }

  setName(name: string){
    this.name = name;
  }
}

const person = new Person("Taro");
console.log(person.getName());
person.setName("Hanako");
console.log(person.getName());

//[出力]
//Taro
//Hanako
 

 

インスタンス変数をプロパティにするケース

一方で以下はアクセス修飾子をなくしたパターンです。これだとプロパティとして外部からアクセス可能となります。publicノーマルってところがJavaと違うところですね。

class Person {
  name: string;

  constructor(name: string) {
    this.name = name;
  }
}

const person = new Person("Taro");
console.log(person.name);

//[出力]
//Taro
 

 

継承の例

クラスなので継承もできます。一番上のPersonクラスを継承した例が以下となります。

class Friend extends Person {
  private age: number;
  constructor(name: string, age: number) {
    super(name);
    this.age = age;
  }
  profile(): string {
    return `name: ${this.getName()} age: ${this.age}`
  }
}

const android = new Friend("Ichiro", 38);
console.log(android.profile());

//[出力]
//name: Ichiro age: 38

 

スポンサーリンク

 - TypeScript