[英]Typechecking HTTPClient request in Angular 4
我想知道如何在Angular 4中正確使用HTTP客戶端進行類型檢查。 https://angular.io/guide/http下的官方文檔說我應該像這樣做:
因此,我們有一個蛋糕:
export interface Cake { numberOfCandles: number; diameter: number }
和CakeService:
@Injectable() export class CakeService { public getCake(cakeUrl: string): Observable<Cake> { return this.http.get<Cake>(cakeUrl); } }
看起來很簡單。 因此,我編寫了一個測試以查看其工作方式:
it('should get one cake', inject([CakeService, HttpTestingController], (http: CakeService, httpMock: HttpTestingController) => { http .getCake('testurl') .subscribe((data: Cake) => { expect(data.numberOfCandles).toBe('Test'); }); const req = httpMock.expectOne('testurl'); expect(req.request.method).toEqual('GET'); req.flush({ numberOfCandles: 'Test' }); httpMock.verify(); }));
令我驚訝的是,測試通過了。 類型檢查是否應該捕獲發送的字符串而不是數字? 文檔中是否缺少我要執行的步驟? 在我看來,這不會在運行時進行類型檢查。 我怎樣才能做到這一點,這有意義嗎? 謝謝!
TypeScript是靜態鍵入的,以進行編譯。 編譯TypeScript后,它變成未類型化的常規JavaScript。 因此,在運行時,它不會基於不同的類型而失敗,因為它們都被視為“對象”類型。 現在,您可以執行某種鴨子檢查,以確保存在正確的屬性。 但是除此之外,運行時沒有更多內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.