9️⃣
[読書メモ]オブジェクト設計スタイルガイド 1章3~5節 with TypeScript
初めに
オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
1.3 振る舞い
メソッドを通して、クラス内のプロパティを使用して値を加工したり、プロパティを加工したりできる。
1.4 依存関係
Fooを使うために、Barを必要とする場合は、BarをFooの依存関係と呼ぶ
class Foo {
constructor(bar: Bar) {} // 依存性の注入
}
class Bar {}
1.5 継承
クラスで一部だけ定義し、他のクラスに拡張させることができる。
インターフェース:メソッドのシグネチャだけを持つもの(TypeScriptは、インターフェースと実装関係がないオブジェクトの型注釈としても利用可能)
抽象クラス:インターフェース+実装を定義する
// インターフェース
interface Greet {
morning(): string;
}
class Ja implements Greet {
morning(): string {
return "おは";
}
}
class En implements Greet {
morning(): string {
return "gm";
}
}
// 抽象クラス
abstract class Greet {
abstract morning(): string;
public daytime() {
return "hello" + this.strong();
}
protected strong() {
// protectedはオーバーライドされる
return "!";
}
}
class Ja extends Greet {
// 親クラスのprotectedにアクセス可能
morning(): string {
return "おは" + this.strong();
}
// publicはオーバーライドされる
daytime(): string {
return "こん";
}
}
class En extends Greet {
morning(): string {
return "gm";
}
// protectedはオーバーライドされる
strong() {
return "!!!!!!!!!!";
}
}
const j = new Ja();
console.log(j.morning());
const e = new En();
console.log(e.morning());
console.log(e.daytime()); // 親クラスのdaytime() + 自分のstrong()
Discussion