Búsqueda de sitios web

¿Cuál es la manera correcta de usar un paquete global con TypeScript?


Estoy usando un paquete global para habilitar el uso de algunos métodos de enzyme en mis archivos de prueba sin importar:

import { configure, shallow, render, mount } from 'enzyme';
   .....
global.shallow = shallow;
global.render = render;
global.mount = mount;

Así que puedo escribir

const component = shallow(<Input {...props} />);

en mi archivo de prueba sin importar el método shallow

Pero TypeScript no sabe sobre esto y obtengo el error: [ts] No se puede encontrar el nombre 'shallow'.

¿Cómo puedo decirle a TypeScript sobre estos globals?

Respuesta #1

Para eso se usa declare. Agrega la siguiente línea al principio de tu archivo de prueba:

declare const shallow:any;/Tal vez información de tipo más específica si la tienes;

En lugar de usar declare, también podrías convertir el objeto window de tipo así:

const component = (window as any).shallow(<Input {...props} />);

o así:

const component = (<any> window).shallow(<Input {...props} />);

Pero ten en cuenta que exponer funciones como objetos globales no es una buena práctica. Especialmente cuando tienes dos funciones con el mismo nombre, ya que una sobrescribirá a la otra.