If in some cases it does seem like you would really prefer to rewrite a type in your module, rather than adding a conditional statement and a call to your module in another module, I added a method called "remove_typedef() to tdl.py (in my branch for now, so you can grab tdl.py from there if you want).
So you would do something like this in your library:
In order to use this correctly though, you need to really be sure you are not removing anything useful and forgetting to include it in your new definition. So, in some cases doing it where the type is originally defined will be preferable for that reason (because you see what is being put in originally).
Ideally, we would write a more complicated method called e.g. update() which would carefully update the specific part of the definition only (similar to merge() in that sense).