Write a TypeScript class representing a "Product" with properties such as name, price, and description. Include appropriate constructors, getters, and setters. Additionally, create a method to calculate the discounted price based on a percentage discount.
PLAINFORMAT
class Product {
  private _name: string;
  private _price: number;
  private _description: string;

  constructor(name: string, price: number, description: string) {
    this._name = name;
    this._price = price;
    this._description = description;
  }

  // Getters
  get name(): string {
    return this._name;
  }

  get price(): number {
    return this._price;
  }

  get description(): string {
    return this._description;
  }

  // Setters
  set name(value: string) {
    this._name = value;
  }

  set price(value: number) {
    this._price = value;
  }

  set description(value: string) {
    this._description = value;
  }

  // Method to calculate discounted price
  calculateDiscountedPrice(discountPercentage: number): number {
    if (discountPercentage < 0 || discountPercentage > 100) {
      throw new Error("Invalid discount percentage. Must be between 0 and 100.");
    }
    const discountAmount = (this._price * discountPercentage) / 100;
    return this._price - discountAmount;
  }
}