使用TypeScript的全局包的正确方法是什么?

时间:2018-03-30 09:42:03

标签: typescript global enzyme

我正在使用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'.

如何告诉打字稿有关这些全局变量?

1 个答案:

答案 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} />);

但请记住,将函数作为全局对象公开并不是一个好习惯。特别是当你有两个同名的函数时,一个函数会覆盖另一个函数。