如何处理angular中的http响应类型?
How to deal with http response type in angular?
我写了一个http get请求:
getProduct(path, opts?): Observable<Product> {
return this.http.get(path, opts?.httpParams).pipe(
map((res:IProduct) => new Product(res))
);
}
我的产品 class 使用接口构造:
export Interface IProduct {
productName:string;
productCode:string;
descr:string;
}
我想当我在 map() 中指定一个接口作为类型时,它会检查响应的内容。如果它错过了一些 属性 它会给我一个错误或什么的。
但它没有,它只是传递所有内容以尝试实例化一个产品对象。
我是不是对Interface的用法理解有误?如何确保响应与接口匹配?
不幸的是,不,您声明的类型没有任何作用,甚至不能用作检查您收到的数据的完整性,或者它与接口或 类 您定义的匹配程度。
TypeScript 的类型纯粹是一项 compile-time 功能,可帮助您编写更一致的代码,并使 IntelliSense 等功能更智能、更有用。如果您想确保获得有效数据,则必须自己明确检查响应。
我写了一个http get请求:
getProduct(path, opts?): Observable<Product> {
return this.http.get(path, opts?.httpParams).pipe(
map((res:IProduct) => new Product(res))
);
}
我的产品 class 使用接口构造:
export Interface IProduct {
productName:string;
productCode:string;
descr:string;
}
我想当我在 map() 中指定一个接口作为类型时,它会检查响应的内容。如果它错过了一些 属性 它会给我一个错误或什么的。 但它没有,它只是传递所有内容以尝试实例化一个产品对象。
我是不是对Interface的用法理解有误?如何确保响应与接口匹配?
不幸的是,不,您声明的类型没有任何作用,甚至不能用作检查您收到的数据的完整性,或者它与接口或 类 您定义的匹配程度。
TypeScript 的类型纯粹是一项 compile-time 功能,可帮助您编写更一致的代码,并使 IntelliSense 等功能更智能、更有用。如果您想确保获得有效数据,则必须自己明确检查响应。