【发布时间】:2018-10-31 07:43:26
【问题描述】:
在引入 Angular 的新 HttpClient 之前,我们从 http api 调用返回的对象可以使用 instanceof 关键字进行验证。他们不再可以使用 HttpClient 模块。我正在尝试一些简单的方法,但类型检查每次都返回 false。期望的行为:
```
getCow() {
return this.http.get<Cow>(ApiRoute.GET_COW, options)
.map(res => res as Cow)
.toPromise()
.then((c: Cow) => {
console.log(c instanceof Cow); //this is false
})
}
```
将返回 true。有谁知道在 http 客户端幕后新建一个实例的简单方法?
【问题讨论】:
-
牛到底是什么?您需要使用
new构造它并使用cow道具进行初始化。这不是 Angular 或 TS 可以为您处理的。 -
以上只是一个虚构的例子。为了这个问题,
Cow是一个没有属性和默认构造函数的类。 -
那么
res包含什么?这是否意味着它可以被丢弃? -
您之前是如何创建 Cow 类的实例的?你应该能够以同样的方式做到这一点。
-
我不认为 StackOverflow 上的任何解决方案都是该问题的全面解决方案。所以,我为此创建了一个 npm 包 angular-http-deserializer:npmjs.com/package/angular-http-deserializer#usage
标签: angular typescript angular-http angular-httpclient