Build a Library: Catalog Attempt included

Good day! I have attempted Step 25 in the “Build a Library” course that refers to building a catalog to store items. I have coded mine to separate items into arrays that match constructor names. Not sure if this is the best route, but I wanted to get feedback on what it should look like. Thanks.

class Media {
  constructor(title) {
    this._title = title;
    this._isCheckedOut = false;
    this._ratings = [];
  }

  get title() {
    return this._title;
  }

  get isCheckedOut() {
    return this._isCheckedOut;
  }

  set isCheckedOut(checkedOut) {
    this._isCheckedOut = checkedOut;
  }

  get ratings() {
    return this._ratings;
  }

  toggleCheckOutStatus() {
    this.isCheckedOut = !this.isCheckedOut;
  }

  getAverageRating() {
    let sum = this.ratings.reduce((a, b) => a + b, 0);
    let average = sum / this.ratings.length;
    return average;
  }

  addRating(rating) {
    this.ratings.push(rating);
  }
}

// Book Subclass

class Book extends Media {
  constructor(author, title, pages) {
    super(title);
    this._author = author;
    this._pages = pages;
  }

  get author() {
    return this._author;
  }

  get pages() {
    return this._pages;
  }
}

// Movie Subclass

class Movie extends Media {
  constructor(director, title, runTime) {
    super(title);
    this._director = director;
    this._runTime = runTime;
  }

  get director() {
    return this._director;
  }

  get runTime() {
    return this._runTime;
  }
}

// CD Subclass

class CD extends Media {
  constructor(artist, title, songs) {
    super(title);
    this._artist = artist;
    this._songs = songs;
  }
}

// Instances

/* const historyOfEverything = new Book('Bill Bryson', 'A Short History of Nearly Everything', 544);
historyOfEverything.toggleCheckOutStatus();
console.log(historyOfEverything.isCheckedOut);
historyOfEverything.addRating(4);
historyOfEverything.addRating(5);
historyOfEverything.addRating(5);
console.log(historyOfEverything.getAverageRating());

const speed = new Movie('Jan de Bont', 'Speed', '116');
speed.toggleCheckOutStatus();
console.log(speed.isCheckedOut);
speed.addRating(1);
speed.addRating(1);
speed.addRating(5);
console.log(speed.getAverageRating()); */

// Catalog Class
class Catalog {
  constructor() {
    this._movies = [];
    this._books = [];
    this._CDs = [];
  }

  get movies() {
    return this._movies;
  }

  get books() {
    return this._books;
  }

  get CDs() {
    return this._CDs;
  }

  addMedia(item) {
    let type = item.constructor.name;
    switch(type) {
      case 'Movie':
        this.movies.push(item);
        break;
      case 'Book':
        this.books.push(item);
        break;
      case 'CD':
        this.CDs.push(item);
        break;
    }
  }
}