Почему прямоугольник не является экземпляром класса квадрата?
я так думаю, что если в свойствах прямоугольника задать разные по размеру длину и ширину, то не выполнится условие, что он квадрат
Квадрат это частный случай прямоугольника. Точка. Можно забыть слово квадрат и говорить всегда прямоугольник, смысл не изменится. Для создания квадрата требуется лишь один параметр, длинна грани. Для создания прямоугольника требуется два параметра, длина грани А и грани Б. Задав прямоугольнику два одинаковых параметра, получится квадрат. Если есть уже прямоугольник, то для него можно сделать обертку в виде квадрата с одним параметром и создавать прямоугольники, и не надо писать лишнее.class Figure {
  constructor(edges: number[], angles: number[]) {
    //  ...
  }
}

class Rectangle extends Figure {
  constructor(x: number, y: number) {
    super([x, y, x, y], [90, 90, 90, 90]);
  }
}

class Square extends Rectangle {
  constructor(x: number) {
    super(x, x);
  }
}