Shape with two variants: Circle and Rectanglekind property with a unique string literalradius for circle, width and height for rectanglegetArea that takes a Shape and returns its area using discriminated union narrowingswitch statement on the kind property inside getArea