typescript - Varför Angular-guider inte behöver importera Observable


Om du tittar på Angular-handledningarna här, importerar de inte Observable som alla andra måste göra, och de importerar inte heller sin authService.

Här är vad jag gjorde på det minsta för att få ts att inte klaga:

import { AuthService } from './auth.service';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
  constructor(private auth: AuthService) {}

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // Get the auth header from the service.
    const authHeader = this.auth.getAuthorizationHeader();
    // Clone the request to add the new header.
    const authReq = req.clone({headers: req.headers.set('Authorization', authHeader)});
    // Pass on the cloned request instead of the original request.
    return next.handle(authReq);
  }
}

Gör de något som jag inte gör, eller hoppade de bara över importeringen för att hålla handledningen kortare med 2 rader.

Svar #1

Det visas bara inte där, för kodläsbarhet, men om du går igenom deras handledning:

https://angular.io/tutorial/toh-pt6#rxjs-imports

Det finns en länk till live-demot: Plnkr

Här kan du tydligt se alla importerna

Fil : app/hero-search.component.ts

import { Component, OnInit } from '@angular/core';
import { Router }            from '@angular/router';

import { Observable }        from 'rxjs/Observable';
import { Subject }           from 'rxjs/Subject';

// Observable class extensions
import 'rxjs/add/observable/of';

// Observable operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';

Svar #2

Här är vad jag gjorde som minimum för att få TS att inte klaga

Detta är rätt version. Angular-dokumentationen är helt enkelt felaktig/inaktuell. Skicka dem en PR 🌹