Global: Módulo Modificador

Módulos Modificadores Globales

Un módulo modificador global altera los valores existentes en el ámbito global cuando se importan. Por ejemplo, podría existir una biblioteca que añada nuevos miembros a String.prototype cuando se importa. Este patrón es algo peligroso debido a la posibilidad de conflictos en tiempo de ejecución, pero aún podemos escribir un archivo de declaración para él.

Identificando módulos modificadores globales

Los módulos modificadores globales son generalmente fáciles de identificar a partir de su documentación. En general, son similares a los plugins globales, pero necesitan una llamada require para activar sus efectos.

Podrías ver documentación como esta:

js
// Llamada 'require' que no usa su valor de retorno
var unused = require("magic-string-time");
/* o */
require("magic-string-time");
var x = "hello, world";
// Crea nuevos métodos en tipos incorporados
console.log(x.startsWithHello());
var y = [1, 2, 3];
// Crea nuevos métodos en tipos incorporados
console.log(y.reverseAndSort());

Aquí hay un ejemplo

ts
// Definiciones de tipo para [~EL NOMBRE DE LA BIBLIOTECA~] [~NÚMERO DE VERSIÓN OPCIONAL~]
// Proyecto: [~EL NOMBRE DEL PROYECTO~]
// Definiciones por: [~TU NOMBRE~] <[~UNA URL PARA TI~]>
/*~ Este es el archivo de plantilla del módulo modificador global. Debes renombrarlo a index.d.ts
*~ y colocarlo en una carpeta con el mismo nombre que el módulo.
*~ Por ejemplo, si estuvieras escribiendo un archivo para "super-greeter", este
*~ archivo debería ser 'super-greeter/index.d.ts'
*/
/*~ Nota: Si tu módulo modificador global es invocable o construible, necesitarás
*~ combinar los patrones aquí con los de los archivos de plantilla module-class o module-function
*~ archivos de plantilla
*/
declare global {
/*~ Aquí, declara cosas que van en el espacio de nombres global, o aumenta
*~ declaraciones existentes en el espacio de nombres global
*/
interface String {
fancyFormat(opts: StringFormatOptions): string;
}
}
/*~ Si tu módulo exporta tipos o valores, escríbelos como de costumbre */
export interface StringFormatOptions {
fancinessLevel: number;
}
/*~ Por ejemplo, declarando un método en el módulo (además de sus efectos secundarios globales) */
export function doSomething(): void;
/*~ Si tu módulo no exporta nada, necesitarás esta línea. De lo contrario, bórrala */
export {};

The TypeScript docs are an open source project. Help us improve these pages by sending a Pull Request

Contributors to this page:
MHMohamed Hegazy  (53)
FKFabián Karaben  (6)
1+

Last updated: 02 may 2025