Module Augmentation can be used to patch type definitions in modules, e.g. in third-party libraries.
For example, @types/json-schema provides type definitions for JSON Schema, but the JSONSchema7 interface for Draft-07 does not support custom keywords. We cannot simply create a new type that extends JSONSchema7 (e.g. JSONSchema7WithExtensions) because JSONSchema7 recursively references itself. To allow custom keywords that start with x- (to be compatible with future versions of JSON Schema), we can augment the module to add an index signature to the JSONSchema7 interface globally.