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
スポンサーリンク