Módulo: Plugin

Por ejemplo, cuando quieres trabajar con código JavaScript que extiende otra biblioteca.

ts
import { greeter } from "super-greeter";
// API normal de Greeter
greeter(2);
greeter("Hello world");
// Ahora extendemos el objeto con una nueva función en tiempo de ejecución
import "hyper-super-greeter";
greeter.hyperGreet();

La definición para “super-greeter”:

ts
/*~ Este ejemplo muestra cómo tener múltiples sobrecargas para tu función */
export interface GreeterFunction {
(name: string): void
(time: number): void
}
/*~ Este ejemplo muestra cómo exportar una función especificada por una interfaz */
export const greeter: GreeterFunction;

Podemos extender el módulo existente de la siguiente manera:

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 plugin del módulo. 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'
*/
/*~ En esta línea, importa el módulo al que este módulo añade */
import { greeter } from "super-greeter";
/*~ Aquí, declara el mismo módulo que el que importaste arriba
*~ luego expandimos la declaración existente de la función greeter
*/
export module "super-greeter" {
export interface GreeterFunction {
/** ¡Saluda aún mejor! */
hyperGreet(): void;
}
}

Esto utiliza fusión de declaraciones (declaration merging).

El Impacto de ES6 en los Plugins de Módulo

Algunos plugins añaden o modifican exportaciones de nivel superior en módulos existentes. Aunque esto es legal en CommonJS y otros cargadores, los módulos ES6 se consideran inmutables y este patrón no será posible. Debido a que TypeScript es independiente del cargador, no hay una imposición en tiempo de compilación de esta política, pero los desarrolladores que pretendan hacer la transición a un cargador de módulos ES6 deben ser conscientes de esto.

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