ERROR in src/app/new-applicant/new-applicant.service.ts(35,65): error TS2345: Argument of type '{ reportProgress: boolean; observe: string; headers: HttpHeaders; }' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType?: "json"; withCredentials?: boolean; }'. Types of property 'observe' are incompatible. Type 'string' is not assignable to type '"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
}
service
public registerNewApplicant(data)
{
return this.http.post(environment.baseURL+"applicant/",data,this.jwtTokenGenerator.generateHeaders())
}
Use as const
to force TypeScript to infer the type of observe
as the literal type "events"
instead of string
:
observe: 'events' as const,
Each method in HttpClient has a bunch of overloads which expect observe
to be one of the following: "body"
, "events"
, "response"
.
TypeScript by default infers type of string literals as string
, except in some contexts such as initializing a const
or readonly
fields. The return type of generateHeaders
ends up being
{ reportProgress: boolean; observe: string; headers: HttpHeaders; }
The info about observe
being "events"
is lost, so this value does not match any of the overloads.
Cast it to 'events'
observe: 'events' as 'events'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With