错误 TS2339: 类型 'Observable<HttpEvent<any> 上不存在属性 'do'

Posted

技术标签:

【中文标题】错误 TS2339: 类型 \'Observable<HttpEvent<any> 上不存在属性 \'do\'【英文标题】:error TS2339: Property 'do' does not exist on type 'Observable<HttpEvent<any>错误 TS2339: 类型 'Observable<HttpEvent<any> 上不存在属性 'do' 【发布时间】:2018-10-25 12:34:24 【问题描述】:

我使用的是 angular-5.x,当我升级到 angular-6.x 及其对等依赖项(区域、rxjs 等)后。

我开始面临以下错误

src/app/xxx/apiConnection/auth.interceptor.ts(25,33) 中的错误:错误 TS2339:“Observable>”类型上不存在属性“do”。 src/app/xxx/apiConnection/auth.interceptor.ts(30,31):错误 TS2339:“Observable>”类型上不存在属性“do”。

我的代码如下:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> 
    console.log(req)
    if(!req.headers.has('skip-interceptors')) 
      let card = localStorage.getItem(LocalStoregeIdems.oAUTH_ACCESS_CARD)
        , headers;
      if (card) 
        headers = req.headers.set('Authorization', card);
      

      let clone = req.clone(
            withCredentials: true,
            headers
          );
      return next.handle(clone).do(event => 
        console.log(event);
      );
     else 
      req.headers.delete('skip-interceptors');
      return next.handle(req).do(event => 
        console.log(event);
      );
    
  

【问题讨论】:

【参考方案1】:

对皮埃尔的完整性。 如果您 do 想使用 tap(双关语..),您需要先使用管道。 你的断线看起来像这样:

import  tap  from 'rxjs/operators';
...

return next.handle(req).pipe(tap(event => 
        console.log(event);
    )
);

【讨论】:

【参考方案2】:

do 运算符已在 rxjs6 中重命名为 tap 运算符。

希望对你有帮助

【讨论】:

以上是关于错误 TS2339: 类型 'Observable<HttpEvent<any> 上不存在属性 'do'的主要内容,如果未能解决你的问题,请参考以下文章

错误 TS2339:类型“”上不存在属性“包含”

错误 TS2339:类型“”上不存在属性“contenido”

错误 TS2339:“主页”类型上不存在属性“路由器”

TypeScript:TS2339 错误——“对象”类型上不存在属性

错误 TS2339:“字符串”类型上不存在属性“endsWith”

错误 TS2339:类型“Y”上不存在属性“x”