generated at
完全Constructor
instanceが一瞬でも間違ったデータ状態にならないために必要な機構の1つ
instantiateした時点で正しいデータになっている



前提
「instantiateしてから利用できるまでにいくつかのmethodを呼び出して準備する必要がある」のような状況を許さない
newした時点で正しいデータ構造になっていることを保証する設計にする


Constructor内で値のvalidationをする
不正な値の場合はconstructor内で例外を投げる
ts
class Price { #price: number; constructor(price: number) { if(!this.isValid) { throw new Error(); } this.#price = price; } private isValid(price: number) { return price >= 0; } }
例えば、(ビジネス要件的に)自然数しか許容しない場合は、Consturoctor内で引数に対して自然数かどうかを判定してからinstantiateする



もし合成型なのであれば
オブジェクト生成時点で必要な情報が全て揃うという前提が必要になる



出典を知りたい
英語でググっても特にヒットしない



参考