I think that many of the problems of this are solved by abstract types and good module interfaces to interacting with those types.
If the business logic changes, the internal type representation can be modified or a new module that fills the same signature but uses a different internal type can be written.
Modularity matters most. If you have to do massive refactoring of code because of a change in type representation, there’s an issue with the modularity of your design. Good modularity prevents refactoring from impacting the rest of the system unless you need to change your module — that’s something that’s true even if you have no static typing.
If the business logic changes, the internal type representation can be modified or a new module that fills the same signature but uses a different internal type can be written.
Modularity matters most. If you have to do massive refactoring of code because of a change in type representation, there’s an issue with the modularity of your design. Good modularity prevents refactoring from impacting the rest of the system unless you need to change your module — that’s something that’s true even if you have no static typing.