我最近看了一个关于使用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对象转换为typescript类
如何获得日期对象从json响应在typescript
你可以对class做一些类似的事情,但与class的主要区别是它们是在运行时出现的(构造函数),你可以用processing在它们中定义方法。但是,在这种情况下,你需要实例化对象才能使用它们:
this.http.get('...')
.map(res => {
var data = res.json();
return data.map(d => {
return new Product(d.productNumber,
d.productName, d.productDescription);
});
});
接口只在编译时存在。这只允许您检查接收到的预期数据是否遵循特定的结构。为此,你可以将你的内容转换到这个接口:
this.http.get('...')
.map(res => <Product[]>res.json());
请看这些问题:
如何将JSON对象转换为typescript类
如何获得日期对象从json响应在typescript
你可以对class做一些类似的事情,但与class的主要区别是它们是在运行时出现的(构造函数),你可以用processing在它们中定义方法。但是,在这种情况下,你需要实例化对象才能使用它们:
this.http.get('...')
.map(res => {
var data = res.json();
return data.map(d => {
return new Product(d.productNumber,
d.productName, d.productDescription);
});
});