Módulo: Clase

Por ejemplo, cuando quieres trabajar con código JavaScript que se ve así:

ts
const Greeter = require("super-greeter");
const greeter = new Greeter();
greeter.greet();

Para manejar la importación tanto a través de UMD como de módulos:

ts
// Definiciones de tipo para [~EL NOMBRE DE LA LIBRERÍA~] [~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 para módulos de clase.
*~ Deberías 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'
*/
// Ten en cuenta que los módulos ES6 no pueden exportar directamente objetos de clase.
// Este archivo debe importarse usando el estilo CommonJS:
// import x = require('[~EL MÓDULO~]');
//
// Alternativamente, si --allowSyntheticDefaultImports o
// --esModuleInterop está activado, este archivo también puede ser
// importado como una importación por defecto:
// import x from '[~EL MÓDULO~]';
//
// Consulta la documentación de TypeScript en
// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require
// para entender las soluciones comunes para esta limitación de los módulos ES6.
/*~ Si este módulo es un módulo UMD que expone una variable global 'myClassLib' cuando
*~ se carga fuera de un entorno de cargador de módulos, declara esa global aquí.
*~ De lo contrario, elimina esta declaración.
*/
export as namespace myClassLib;
/*~ Esta declaración especifica que la función constructora de la clase
*~ es el objeto exportado desde el archivo
*/
export = Greeter;
/*~ Escribe los métodos y propiedades de tu módulo en esta clase */
declare class Greeter {
constructor(customGreeting?: string);
greet: void;
myMethod(opts: MyClass.MyClassMethodOptions): number;
}
/*~ Si también quieres exponer tipos desde tu módulo, puedes
*~ colocarlos en este bloque.
*~
*~ Ten en cuenta que si decides incluir este espacio de nombres, el módulo puede ser
*~ importado incorrectamente como un objeto de espacio de nombres, a menos que
*~ --esModuleInterop esté activado:
*~ import * as x from '[~EL MÓDULO~]'; // ¡INCORRECTO! ¡NO HAGAS ESTO!
*/
declare namespace MyClass {
export interface MyClassMethodOptions {
width?: number;
height?: number;
}
}

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)
DRDaniel Rose  (1)
2+

Last updated: 02 may 2025