在角度上,我正在定义一个接口,并将其与服务中的可观察对象一起使用,但是当即将到来的响应不同于该接口时,它不会给出任何错误
接口
export interface Quote {
abc: string;
}
服务
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Quote } from './Quote';
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class First {
constructor(private http: HttpClient) { }
getFirst() {
return this.http.get<Quote>('https://programming-quotes-api.herokuapp.com/quotes/id/5a6ce86f2af929789500e824')
}
handleError(err: HttpErrorResponse) {
console.log('here' + err.message);
return Observable.throw(err.message + 'ssaa');
}
}
使用该服务的组件
import { Component, Input, OnChanges, SimpleChanges, OnInit } from "@angular/core";
import { First } from './first.service';
import { Quote } from '@angular/compiler';
@Component({
templateUrl: "Number.component.html",
styleUrls: ["Number.component.css"],
selector: "Number",
providers: [First]
})
export class NumberComponent implements OnInit {
constructor(private first: First) { }
ngOnChanges(changes: SimpleChanges): void {
for (let property in changes) {
console.log(`${property} ${changes[property].currentValue} ${changes[property].previousValue}`)
}
}
ngOnInit() {
this.first.getFirst().subscribe((result) => console.log(result));
}
@Input('ab')
numberIn: number = 1;
}
所以我的问题是,鉴于即将到来的响应处于这种状态,一切都将如何正常工作
{_id: "5a6ce86f2af929789500e824", sr: "Jedan od mojih najproduktivnijih dana je bio kada sam bacio 1000 linija koda.", en: "One of my most productive days was throwing away 1,000 lines of code.", author: "Ken Thompson", source: "", …}
答案 0 :(得分:2)
有几个原因导致如果不满足该界面就不会出现任何错误。
第一个是在编译时期间,编译器不知道,也不知道您的API响应到底是什么样子。在此期间,您永远不会与API进行交互。
由于浏览器不了解TypeScript,因此必须将其编译为JavaScript。由于JavaScript是untyped language,因此您之前声明的所有键入将在编译过程中消失。这也消除了在运行时期间抛出输入错误的可能性。
拥有一个很酷的功能,但是现在您有责任保持API接口为最新。