Observable<Any> 触发 TSLint '属性不存在'
Posted
技术标签:
【中文标题】Observable<Any> 触发 TSLint \'属性不存在\'【英文标题】:Observable<Any> triggers TSLint 'property does not exist'Observable<Any> 触发 TSLint '属性不存在' 【发布时间】:2016-04-01 02:15:12 【问题描述】:我这里有这段代码:
this._auth.getToken().flatMap(token =>
return this._http.post("/authenticate");
).flatMap(res =>
let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", res.json().Token);
return this._http.get(this.endpoints[endpoint], headers: headers);
);
http.get 和 http.post 返回一个 Observable
然而 flatMap 返回的 Observable 不包含 .json 方法。
它工作正常,但 TSlint 抱怨:
类型“”上不存在属性“json”。在第 32 行第 49 行
我做错了吗?这是预期的吗?这不是什么大问题,但可能是代码中更大问题的征兆。
【问题讨论】:
试试.flatMap((res: Response) => ...)
有效!谢谢你。您为什么不将其发布为答案?
我按照您的建议将其发布为答案。我很好奇你用的是哪个版本(angular2和TS),你用的是哪一个?
"angular2": "2.0.0-beta.0" "typescript": "^1.7.3" "rxjs": "5.0.0-beta.0" "tslint": "^ 3.1.1"
【参考方案1】:
要解决此问题,您应该添加 Response
作为返回值的类型
flatMap((res: Response) =>
let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", res.json().Token);
return this._http.get(this.endpoints[endpoint], headers: headers);
);
注意
这个问题已经解决了,检查一下comment,所以你可能不是最新版本。我使用 beta.0 对其进行了测试,即使不添加 Response
作为类型,我也无法重现此消息。
参考
RxJS #635 Angular #5597【讨论】:
以上是关于Observable<Any> 触发 TSLint '属性不存在'的主要内容,如果未能解决你的问题,请参考以下文章
类型 '() => Observable<any>' 不可分配给类型 '() => Observable<any>'
类型 'Observable<any>' 不可分配给类型 'Observable<T>'
rxswift:如何获取 Observable<Any> 导致 Observable<[Category]> 的组合?
类型 '() => Observable<any>' 上不存在属性 'subscribe'
“MonoTypeOperatorFunction<any>”类型的参数不可分配给“UnaryFunction<Observable<any>, Observable