完全Constructor
instanceが一瞬でも間違ったデータ状態にならないために必要な機構の1つ
前提
「instantiateしてから利用できるまでにいくつかのmethodを呼び出して準備する必要がある」のような状況を許さない
newした時点で正しいデータ構造になっていることを保証する設計にする
Constructor内で値のvalidationをする
不正な値の場合はconstructor内で例外を投げる
code:ts
class Price {
constructor(price: number) {
if(!this.isValid) {
throw new Error();
}
this.#price = price;
}
private isValid(price: number) {
return price >= 0;
}
}
例えば、(ビジネス要件的に)自然数しか許容しない場合は、Consturoctor内で引数に対して自然数かどうかを判定してからinstantiateする
もし合成型なのであれば
オブジェクト生成時点で必要な情報が全て揃うという前提が必要になる
出典を知りたい
英語でググっても特にヒットしない
参考