Hey Sreeram,
Thanks for the comment. I think we can both agree that it's a terrible practice to pass around intact objects that haven't been destructured because of mutation concerns.
The worst code base I ever saw passed around an anonymous `props` object with `any` type up to 10 levels deep from where it was defined while repeatedly mutating it. That sucked.
But to the point of destructured object parameters vs. traditional functional parameters, they're both susceptible to mutation in the function. We catch that with ESLint with the no-param-reassign rule, which works for objects as long as you've destructured that object.