If you're serious about doing OO with static typing as well as (of course) mutability, you basically have to have something like flow typing to keep away the circle/ellipse nonsense. (In so far as flow typing is really static typing at all!)
Yes... But I think this only tells half of the story.
What if you pass a reference and mutate the object inside the function?
Yes... But I think this only tells half of the story.
What if you pass a reference and mutate the object inside the function?