Book 著者のバリデーション
CoddyのJavaScriptジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 52/56。
チャレンジ
バリデーションを追加して Book クラスのコンストラクタを改善します。現在、Book は author パラメータとして任意の値を受け入れますが、Author インスタンスのみを受け入れるようにする必要があります。
タスク:
Bookコンストラクタ内に if-else チェックを追加しますauthor instanceof Authorを使用して、authorが有効な場合(Authorクラスのインスタンスである場合)、this.#author = authorを設定します- それ以外の場合(
authorが無効な場合):正確に“Invalid author: must be Author instance”とログを出力します。そしてthis.#author = nullを設定します
このようにすることで、無効な author であっても book は作成されます。
自分で試してみよう
import { Author } from './Author.js';
import { Book } from './Book.js';
// テスト
const rowling = new Author('J.K. Rowling');
// 有効なケース(静かに動作するはず)
const validBook = new Book('Harry Potter', rowling);
console.log('Author:', validBook.authorInfo); // Should output: "Author: J.K. Rowling"
// 無効なケース(メッセージをログ出力するが、それでも本を作成する)
const invalid1 = new Book('Fake Book', 'String Author');