首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 2接口属性映射

Angular 2接口属性映射
EN

Stack Overflow用户
提问于 2016-12-16 00:17:11
回答 1查看 956关注 0票数 1

有没有人能帮我理解一下。我从Angular 2学到的教程演示了如何使用接口通过Observable存储数据。即:.map((response: Response) => response.json())。

我发现的一个问题是,我的接口属性定义必须与json属性完全匹配。如果json属性是_custNum,我的接口必须使用与_custNum完全相同的名称。如果我将名称更改为'custNum‘,它将不会映射。这只是接口的规则吗?

示例代码:

代码语言:javascript
复制
export interface ICustSearch {
     _custNum:  string;
     _custName: string;
     _address: string;
     _city: string;
     _state: string;
     _zip: string;
     _county: string;
     _phone: string;
 }

 return this._http.get(APIRoutes.custSearchLocal, {headers: headers})
             .map((response: Response) => <ICustSearch[]> 
                         response.json())
             .catch(this.handleError);

现在,如果我将上述接口中的属性'_custNum‘更改为'custNum’,客户编号的映射将失败。有什么办法可以解决这个问题吗?另外,为什么使用接口而不是类来映射json对象,有什么好处?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-12-16 00:59:25

这两个问题都与Angular无关,而与TypeScript有关。

通常,它是TypeScript中的强制转换机制,用于验证任何对象是否遵循所提供的约定(接口/类)。你可以使用类,但是如果你的类/接口已经声明了方法,提供的对象必须实现所有这些方法(你肯定不能用JSON实现),否则TypeScript编译器不允许你强制转换...有许多技术可以将任何对象转换为Class (例如,使用构造函数、setter、转换器使用Object扩展Class实例)。

当然,您可以避免使用类/接口,而只使用any类型...

是的,没有内置的方法来转换具有不同名称的属性,除非您实现/查找实现,这可能是另一个Converter/Factory。

使用类似于JPA域的方式为每个接口/类属性分配别名列表可能是一个好主意,但是大多数时候API更改不是那么频繁,而且您可以找到大量的JSON to TypeScript接口在线生成器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41168711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档