我正在使用来自react-native的Fetch API,我正在使用typescript。 我的代码如下所示:
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", "打字稿":" 2.6.1"
答案 0 :(得分:5)
您的构建包含哪些TypeScript库?看起来您对headers
属性的定义是错误的。在TypeScript 2.6.2中,headers
属性的类型为HeadersInit
,其定义为:
type HeadersInit = Headers | string[][] | { [key: string]: string };
答案 1 :(得分:3)
您可以尝试将其键入为HeadersInit
吗?
let requestHeaders: HeadersInit = new Headers();
requestHeaders.set('Content-Type', 'application/json');
let responseLogin = await fetch('URL', {
method: 'POST',
headers: requestHeaders,
body: requestBody
});
如果没有,您可以显示在问题中显示的Headers()构造函数启动该错误时遇到的错误吗?
答案 2 :(得分:2)
我已经解决了这个问题:
let requestHeaders: any = { 'Content-Type': 'application/json' };
let responseLogin = await fetch('URL', {
method: 'POST',
headers: requestHeaders,
body: requestBody
});
我所要做的就是忽略该错误消息,因为JS正确解释了语法,只有typescript没有,我通过创建一个存储这两个字符串的变量来做到这一点。
答案 3 :(得分:1)
我解决了导入这样的问题
import fetch,{Headers} from'node-fetch';