Код 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
switch (s.kind): в каждой ветке доступны только поля своего варианта.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Конечный автомат платежа с типами переходов
Следующий вопрос
Обработка вебхуков: union событий и in-сужение