打字稿无法使用 react-native 将标头添加到 fetch api

新手上路,请多包涵

我正在使用来自 react-native 的 Fetch API,并且正在使用打字稿。我的代码如下所示:

 let responseLogin = await fetch('http://url_example', {
        method: 'POST',
        headers: {'Content-Type':'application/json'},
        body: requestBody
    });

但是我在标题所在的位置收到以下错误:

  Argument of type '{ method: string; headers: { 'Content-Type': string; }; body: string; }' is not assignable to parameter of type 'RequestInit'.
  Types of property 'headers' are incompatible.
    Type '{ 'Content-Type': string; }' is not assignable to type 'Headers | string[][]'.
      Object literal may only specify known properties, and ''Content-Type'' does not exist in type 'Headers | string[][]'.

我也尝试创建一个自定义标题,但没有任何运气:

     let requestHeaders = new Headers();
        requestHeaders.set('Content-Type', 'application/json');
        // I have also tried adding this at the end but no luck
        // requestHeaders.get('Content-Type');

我怎么能添加一个标题呢?因为我找不到任何方法来实现这一点,而且我不知道问题出在哪里。如果我在邮递员中测试这些,我会得到 200 响应,这里我会得到 401 响应。我也试过这个库只是为了添加自定义标题: https ://www.npmjs.com/package/fetch-headers

我使用:Visual Studio 代码 1.81.1 “react-native”:“0.50.0”,“typescript”:“2.6.1”

原文由 P.Lorand 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 472
2 个回答

您可以尝试将其键入为 HeadersInit 吗?

 const requestHeaders: HeadersInit = new Headers();
requestHeaders.set('Content-Type', 'application/json');

const responseLogin = await fetch('URL', {
  method: 'POST',
  headers: requestHeaders,
  body: requestBody
});

如果没有,您能否显示使用 Headers() 构造函数启动它时遇到的错误,您在问题中显示了?

原文由 Peter van Leeuwen 发布,翻译遵循 CC BY-SA 4.0 许可协议

你的构建中包含了哪些 TypeScript 库?看起来您对 headers 属性的定义是错误的。在 TypeScript 2.6.2 中, headers 属性的类型为 HeadersInit ,定义为: type HeadersInit = Headers | string[][] | { [key: string]: string };

原文由 A. Goodale 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题