Observable<Any> 触发 TSLint 'property does not exist'

Observable<Any> triggers TSLint 'property does not exist'

我这里有这段代码:

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.gethttp.post return 一个 Observable 其中包含一个 .json 方法

但是 flatMap return 是一个不包含 .json 的 Observable方法。

它工作正常,但 TSlint 抱怨:

Property 'json' does not exist on type '{}'.at line 32 col 49

我是不是做错了什么?这是预期的吗?这不是什么大问题,但可能是代码中出现更大问题的征兆。

要解决此问题,您应该添加 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 作为类型,我也无法重现此消息。

参考