我正在使用global包来启用我的测试文件中的一些酶方法而无需导入:
import { configure, shallow, render, mount } from 'enzyme';
.....
global.shallow = shallow;
global.render = render;
global.mount = mount;
所以我可以写
const component = shallow(<Input {...props} />);
在我的测试文件中没有导入shallow
方法
但是打字稿不知道这个,我得到错误:
[ts] Cannot find name 'shallow'.
如何告诉打字稿有关这些全局变量?
答案 0 :(得分:1)
declare
用于什么。将以下行添加到测试文件的顶部:
declare const shallow:any; // Maybe more specific type information if you have
;
除了使用declare之外,您还可以像这样对类型的窗口对象进行类型转换:
const component = (window as any).shallow(<Input {...props} />);
或者像这样:
const component = (<any> window).shallow(<Input {...props} />);
但请记住,将函数作为全局对象公开并不是一个好习惯。特别是当你有两个同名的函数时,一个函数会覆盖另一个函数。