何时在 TypeScript / Angular 中使用接口和模型

新手上路,请多包涵

我最近看了一个使用 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 数据并绑定到接口/模型。有时我想要一个数据对象,有时我想保存一个对象数组。

我应该使用哪一个,为什么?

原文由 I_LIKE_FOO 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 396
2 个回答

接口仅在编译时。这仅允许您检查接收到的预期数据是否遵循特定结构。为此,您可以将内容投射到此界面:

 this.http.get('...')
    .map(res => <Product[]>res.json());

请参阅以下问题:

您可以对类执行类似的操作,但与类的主要区别在于它们存在于运行时(构造函数),并且您可以通过处理在其中定义方法。但是,在这种情况下,您需要实例化对象才能使用它们:

 this.http.get('...')
    .map(res => {
      var data = res.json();
      return data.map(d => {
        return new Product(d.productNumber,
          d.productName, d.productDescription);
      });
    });

原文由 Thierry Templier 发布,翻译遵循 CC BY-SA 3.0 许可协议

当您只想检查数据类型以确保响应始终具有必要的键时,请使用接口。类/模型不仅仅是检查数据类型。另外,很高兴知道 javascript 中不存在接口,这意味着 typescript 将始终在编译时处理接口 unlick javascript 原生的类。

原文由 AAA 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进