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.get 和 http.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
作为类型,我也无法重现此消息。
参考
我这里有这段代码:
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 return 一个 Observable
但是 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
作为类型,我也无法重现此消息。
参考