首页 > 解决方案 > React Native with TypeScript:如何在 setup.js 中设置全局变量?

问题描述

我正在使用 TypeScript 构建一个 React Native 应用程序。

我想使用jest-fetch-mock。在文档中它说要创建setup.js文件并添加

global.fetch = require("jest-fetch-mock");

在里面。我这样做了。但我得到了错误:

[ts] Cannot compile namespaces when the '--isolatedModules' flag is provided.

所以我搜索了一下,发现我只需要导入一些东西来解决这个问题(这很好,因为我需要导入来设置NativeModules.ReactLocalization使用本地化)。

然后我得到错误:

[ts] Cannot find name 'global'.

所以我用谷歌搜索了更多,发现了这个“修复”:

// Change to file to setup.ts and
const globalAny: any = global;

但它抛出了同样的错误,现在我被卡住了。如何设置全局变量?

标签: typescriptunit-testingreact-nativejestjsjest-fetch-mock

解决方案


为什么打字稿编译.js文件?

如果您有setup.ts文件:尝试declare var global: any;global.fetch = ....

但是,我建议您为您的项目使用类型:

npm i -D @types/node @types/jest

然后扩展global对象将如下所示:

declare module NodeJS {
  interface Global {
    fetch: GlobalFetch
  }
}

global.fetch = require('jest-fetch-mock');

推荐阅读