Buscar..


Introducción

Si bien algunas bibliotecas de JavaScript existentes tienen archivos de definición de tipo , hay muchas que no lo hacen.

TypeScript ofrece un par de patrones para manejar las declaraciones faltantes.

Declarar y cualquier global

A veces es más fácil de simplemente declarar un global de tipo any , sobre todo en proyectos simples.

Si jQuery no tenía declaraciones de tipo (las tiene ), podría poner

declare var $: any;

Ahora cualquier uso de $ será escrito any .

Haz un módulo que exporte un valor predeterminado.

Para proyectos más complicados, o en los casos en los que tiene la intención de escribir gradualmente una dependencia, puede ser más limpio crear un módulo.

Usando JQuery (aunque tiene tipografías disponibles ) como ejemplo:

// place in jquery.d.ts
declare let $: any;
export default $;

Y luego, en cualquier archivo de su proyecto, puede importar esta definición con:

// some other .ts file
import $ from "jquery";

Después de esta importación, $ se escribirá como any .

Si la biblioteca tiene varias variables de nivel superior, exporte e importe por nombre en su lugar:

// place in jquery.d.ts
declare module "jquery" {
   let $: any;
   let jQuery: any;

   export { $ };
   export { jQuery };
}

A continuación, puede importar y usar ambos nombres:

// some other .ts file
import {$, jQuery} from "jquery";

$.doThing();
jQuery.doOtherThing();

Usa un modulo ambiental

Si solo desea indicar la intención de una importación (por lo que no desea declarar un global) pero no desea molestarse con ninguna definición explícita, puede importar un módulo de ambiente.

// in a declarations file (like declarations.d.ts)
declare module "jquery";    // note that there are no defined exports

A continuación, puede importar desde el módulo ambiente.

// some other .ts file
import {$, jQuery} from "jquery";

Cualquier cosa importada del módulo declarado (como $ y jQuery ) anterior será de tipo any



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow