何时在TypeScript / Angular2中使用接口和模型
我最近用TypeScript观看了Angular 2的教程,但不确定何时使用接口以及何时使用模型来保存数据结构。
接口的例子:
export interface IProduct { ProductNumber: number; ProductName: string; ProductDescription: string; }
型号示例:
export class Product { constructor( public ProductNumber: number, public ProductName: string, public ProductDescription: string ){} }
我想从URL加载JSON数据并绑定到接口/模型。 有时我想要一个单一的数据对象,其他时间我想要保存和对象的数组。
我应该使用哪一个,为什么?
接口只在编译时。 这只允许您检查收到的预期数据是否遵循特定的结构。 为此,您可以将您的内容投射到此界面:
this.http.get('...') .map(res => <Product[]>res.json());
看到这些问题:
- 如何将JSON对象转换为打字稿类
- 如何从JSON Response中打印Date对象
你可以做类似于类的东西,但是与类的主要区别在于它们是在运行时(构造函数)存在的,你可以通过处理来定义它们的方法。 但是,在这种情况下,您需要实例化对象才能使用它们:
this.http.get('...') .map(res => { var data = res.json(); return data.map(d => { return new Product(d.productNumber, d.productName, d.productDescription); }); });
接口描述了一个类的合同或新的types 。 这是一个纯粹的Typescript元素,所以它不会影响Javascript。
一个模型,也就是一个类 ,是一个实际的JS函数,用来生成新的对象。
我想从URL加载JSON数据并绑定到接口/模型。
去一个模型,否则它仍然是你的Javascript中的JSON。