[英]Why is TypeScript reporting that "'string' is not assignable to type 'RequestMode'"?
我正在嘗試在 TypeScript 中使用 Fetch API,但由於某種原因我得到了
類型 'string' 不可分配給類型 'RequestMode'。
這是我的代碼
export class MainService{
constructor(){}
request(requestObj){
if (!requestObj.url) {
return 'Please provide the end point url'
}
else {
let requestParam = {
method: requestObj.method ? requestObj.method : 'GET',
headers: new Headers(),
mode: 'cors'
};
fetch(endPointHost+requestObj.url,requestParam).then(function(resp){
//^^^ error thrown here
resp.json();
})
}
console.log(" Reached request");
}
}
報告的錯誤是
TS2345:類型'
{ method: any; headers: Headers; mode: string; }
{ method: any; headers: Headers; mode: string; }
{ method: any; headers: Headers; mode: string; }
“不是分配給類型的參數”RequestInit
”。 屬性“mode
”的類型不兼容。 類型“string
”不可分配給類型“RequestMode
”。
這對我mode: 'cors' as RequestMode,
: mode: 'cors' as RequestMode,
這里的問題是requestParam
可能會在以后不尊重RequestInit
接口的情況下進行修改。 您可以在創建時聲明requestParam
實現RequestInit
:
let requestParam: RequestInit = {
method: requestObj.method ? requestObj.method : 'GET',
headers: new Headers(),
mode: 'cors'
};
或者將請求參數直接放在fetch
調用中:
fetch(endPointHost+requestObj.url, {
method: requestObj.method ? requestObj.method : 'GET',
headers: new Headers(),
mode: 'cors'
}).then(function(resp){
resp.json();
})
我有同樣的錯誤:
mode: "no-cors",
headers: {
Accept: "text/plain"
}
{ method: string; mode: string; headers: { Accept: string; }; }
類型的參數{ method: string; mode: string; headers: { Accept: string; }; }
{ method: string; mode: string; headers: { Accept: string; }; }
不可分配給“RequestInit”類型的參數。屬性“模式”的類型不兼容。 類型 'string' 不可分配給類型 'RequestMode'.ts(2345)
修復后:
headers: {
Accept: "text/plain",
RequestMode: "no-cors"
}
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.