src / app / new-applicant / new-applicant.service.ts(35,65)中的ERROR:错误 TS2345:类型为'{reportProgress:boolean;观察:字符串; 标头:HttpHeaders; }'不可分配给类型'{ 标头?:HttpHeaders | {[header:string]:字符串|串[]; }; 观察?参数:HttpParams | {[参数:字符串]:字符串| 串[]; }; reportProgress ?:布尔值; responseType ?:“ json”; withCredentials ?:布尔值; }'。 属性“观察”的类型不兼容。 不能将'string'类型分配给'“ body”'类型。
public generateHeaders()
{
let access=JSON.parse(sessionStorage.getItem("meta_info")).access
// access=access.access;
console.log(access)
var headers_object = new HttpHeaders().set("Authorization", "Bearer " + access);
const httpOptions = {
reportProgress:true,
observe:'events',
headers: headers_object
};
return httpOptions
}
服务
public registerNewApplicant(data)
{
return this.http.post(environment.baseURL+"applicant/",data,this.jwtTokenGenerator.generateHeaders())
}
答案 0 :(得分:3)
使用as const
强制TypeScript将observe
的类型推断为文字类型"events"
而不是string
:
observe: 'events' as const,
HttpClient中的每个方法都有很多重载,它们期望observe
为以下之一:"body"
,"events"
,"response"
。
TypeScript默认将字符串文字的类型推断为string
,在某些情况下(例如初始化const
或readonly
字段除外)。返回类型generateHeaders
最终被
{ reportProgress: boolean; observe: string; headers: HttpHeaders; }
有关observe
是"events"
的信息将丢失,因此该值与任何重载都不匹配。
答案 1 :(得分:2)
将其发布为“事件”
observe: 'events' as 'events'
答案 2 :(得分:0)
我不是打字专家,但是如果您为generateHeaders
方法的签名中提供返回类型,它将解决您的错误。
public generateHeaders(): any {
...
}