Módulo: Función

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

ts
import greeter from "super-greeter";
greeter(2);
greeter("Hello world");

Para manejar tanto la importación vía UMD como módulos:

ts
// Definiciones de tipo para [~THE LIBRARY NAME~] [~OPTIONAL VERSION NUMBER~]
// Proyecto: [~THE PROJECT NAME~]
// Definiciones por: [~YOUR NAME~] <[~A URL FOR YOU~]>
/*~ Este es el archivo de plantilla de módulo para módulos de función.
*~ 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('[~THE MODULE~]');
//
// Alternativamente, si --allowSyntheticDefaultImports o
// --esModuleInterop está activado, este archivo también puede ser
// importado como una importación por defecto:
// import x from '[~THE MODULE~]';
//
// 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 'myFuncLib' cuando
*~ se carga fuera de un entorno de cargador de módulos, declara ese global aquí.
*~ De lo contrario, elimina esta declaración.
*/
export as namespace myFuncLib;
/*~ Esta declaración especifica que la función
*~ es el objeto exportado desde el archivo
*/
export = Greeter;
/*~ Este ejemplo muestra cómo tener múltiples sobrecargas para tu función */
declare function Greeter(name: string): Greeter.NamedReturnType;
declare function Greeter(length: number): Greeter.LengthReturnType;
/*~ Si quieres exponer tipos desde tu módulo también, puedes
*~ colocarlos en este bloque. A menudo querrás describir la
*~ forma del tipo de retorno de la función; ese tipo debería
*~ declararse aquí, como muestra este ejemplo.
*~
*~ Ten en cuenta que si decides incluir este namespace, el módulo puede ser
*~ importado incorrectamente como un objeto de namespace, a menos que
*~ --esModuleInterop esté activado:
*~ import * as x from '[~THE MODULE~]'; // ¡INCORRECTO! ¡NO HAGAS ESTO!
*/
declare namespace Greeter {
export interface LengthReturnType {
width: number;
height: number;
}
export interface NamedReturnType {
firstName: string;
lastName: string;
}
/*~ Si el módulo también tiene propiedades, decláralas aquí. Por ejemplo,
*~ esta declaración dice que este código es legal:
*~ import f = require('super-greeter');
*~ console.log(f.defaultName);
*/
export const defaultName: string;
export let defaultLength: 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