Module augmentation in TypeScript lets you add new types or properties to an existing module by declaring the same module name again with 'declare module'. This merges your additions with the original module's types. For example, you can add an 'age' property to a 'User' interface imported from another file. The process involves importing the module, declaring the module again with the same name, adding new properties inside, and then using the augmented types in your code. This does not change the original module file but extends its types at compile time. When creating objects of the augmented type, you must include all original and added properties. This technique is helpful to extend third-party modules safely.