Задача

Есть фигуры разных видов. Написать функцию area(shape), которая считает площадь. Типизировать так, чтобы при добавлении новой фигуры компилятор заставил обработать её.

Пример

area({ kind: 'circle', radius: 2 }); // 12.566...
area({ kind: 'square', side: 3 }); // 9
area({ kind: 'rectangle', width: 2, height: 5 }); // 10

Решение

См. также