angular - 错误:类型 'string' 不可分配给类型 '"body"'。在角度 8
问题描述
src/app/new-applicant/new-applicant.service.ts(35,65) 中的错误:错误 TS2345:类型参数“{ reportProgress: boolean; 观察:字符串;标头:HttpHeaders;}' 不能分配给类型为 '{ headers?: HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }; 观察?:“身体”;参数?: HttpParams | { [参数:字符串]:字符串 | 细绳[]; }; 报告进度?:布尔值;响应类型?:“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())
}
解决方案
用于as const
强制 TypeScript 将类型推断observe
为文字类型"events"
,而不是string
:
observe: 'events' as const,
HttpClient 中的每个方法都有一堆重载,它们期望observe
是以下之一:"body"
, "events"
, "response"
.
默认情况下,TypeScript 将字符串文字的类型推断为string
,但在某些情况下(例如初始化 aconst
或readonly
字段)除外。的返回类型generateHeaders
最终是
{ reportProgress: boolean; observe: string; headers: HttpHeaders; }
关于observe
存在的信息"events"
丢失了,因此该值与任何重载都不匹配。
推荐阅读
- angular - Doka Image Editor 在使用 onconfirm 时不输出文件
- javascript - 如果我单击表单中的任意位置 - 在 ajax 验证后提交表单,谁能告诉我如何解决这个问题
- reactjs - 访问道具类型传递给函数 MERN 堆栈
- javascript - 如何在 NavItem 的 eventKey 的 uri 中传递 id?我试过: eventKey={'demandes/${dem.id}'} 但它是一个字符串,有人吗?
- mysql - SQL嵌套select语句查询
- c++ - 未见类外函数重载
- python - 如何在 Keras 中对神经网络层进行排序?
- excel - 如何将excel导入datagrid,然后按db值过滤
- docker - 根据 http 请求启动/扩展容器化应用程序
- debian - Dovecot 从 postfix 压缩现有的 maildir 邮件