Menu
Coddy logo textTech

Book 著者のバリデーション

CoddyのJavaScriptジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 52/56。

challenge icon

チャレンジ

バリデーションを追加して、Bookクラスのコンストラクタを改善しましょう。現在、Bookはauthorパラメータに任意の値を受け入れますが、Authorインスタンスのみを受け入れるようにする必要があります。

あなたのタスク:

  1. Bookコンストラクタに、if-elseチェックを追加します。
  2. author instanceof Authorを使用して、authorが有効(Authorクラスのインスタンス)である場合は、this.#author = authorをセットします。
  3. それ以外(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');

オブジェクト指向プログラミングのすべてのレッスン