何时在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。