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が渡された場合でも、本は作成されるようにします。
自分で試してみよう
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); // 出力: "Author: J.K. Rowling"
// 無効なケース(メッセージをログ出力しますが、本は作成されます)
const invalid1 = new Book('Fake Book', 'String Author');