Код Junior Объединения и сужение обновлено

Площадь фигур: union с разными полями

Условие

Опиши Shape: { kind: 'circle'; r: number }, { kind: 'rect'; w: number; h: number }, { kind: 'triangle'; a: number; h: number } (основание и высота). Напиши area(s: Shape) с исчерпывающей проверкой и totalArea(shapes): сумма площадей, округлённая до 2 знаков (Math.round(x * 100) / 100).

Примеры

totalArea([{"kind":"rect","w":2,"h":3}]) // 6
totalArea([{"kind":"circle","r":1}]) // 3.14
totalArea([{"kind":"triangle","a":4,"h":3}, {"kind":"rect","w":1,"h":1}]) // 7

Как подойти

Подсказки: 1
  1. switch (s.kind): в каждой ветке доступны только поля своего варианта.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.