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

2024-03-03

我最近观看了有关 Angular 2 with TypeScript 的教程,但不确定何时使用接口以及何时使用数据结构模型。

接口示例:

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 类 https://stackoverflow.com/questions/22875636/how-do-i-cast-a-json-object-to-a-typescript-class
  • 如何从打字稿中的json响应获取日期对象 https://stackoverflow.com/questions/35917808/how-to-get-date-object-from-json-response-in-typescript/35923990

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

this.http.get('...')
    .map(res => {
      var data = res.json();
      return data.map(d => {
        return new Product(d.productNumber,
          d.productName, d.productDescription);
      });
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在 TypeScript / Angular 中使用接口和模型 的相关文章

随机推荐

  • 如何为 LLVM IR 生成元数据?

    我正在尝试为我生成的 LLVM IR 生成元数据 我想生成以下形式的元数据 nvvm annotations 0 0 metadata void foo metadata kernel i32 1 其中 foo 是我的 LLVM IR 中的
  • orchard cms:如何将媒体选择器字段添加到自定义部分

    我的问题类似于questions 10369967 orchard cms 如何将媒体选择器字段添加到新模块 https stackoverflow com questions 10369967 orchard cms how to add
  • 我应该在 SharpZipLib 中选择哪种压缩类型?

    我有一个发送文件和文件夹的文件传输应用程序 服务器 客户端 我正在尝试通过 TCP 套接字 发送数据 我已经为传输数据的方式制定了一些规则 因此 如果它发送包含许多文件的大文件夹 则应首先将它们压缩为单个 zip 文件 然后再发送发送的 z
  • 领域模型模式示例

    我只是想找一些 Martin Fowler 的例子领域模型 http martinfowler com eaaCatalog domainModel html模式 而我不能 根据我在互联网领域模型上发现的内容 只是向类添加一些 逻辑 方法
  • 如何防止 PyCharm 覆盖 matplotlib 中设置的默认后端?

    我已将默认后端设置为Qt5Agg in config matplotlib matplotlibrc 如果我使用常规 ssh 提示符并打开 这会起作用ipython并运行import matplotlib as mpl 我正确地得到 mpl
  • 带时间戳零的 PHP 日期返回 1 小时

    如果我执行以下操作 date H i s 0 它返回01 00 00 同时它should give 00 00 00 它可能与我的本地主机的时区有关吗 世界标准时间 1 如果是这样 我该如何解决这个问题 致电前设置时区date 你将使用da
  • 为什么在SciPy中使用integrate.odeint时不调用Dfun(gradient)?

    任何人都可以提供一个向 a 提供雅可比行列式的示例吗 integrate odeintSciPy 中的函数 我尝试从 SciPy 教程运行此代码代码示例 http docs scipy org doc scipy dev reference
  • gwt 中的会话管理

    我正在开发 GWT ext 应用程序 在此应用程序中 我管理客户端会话 为此我写了下面的代码 管理会话 导入 com google gwt user client Timer public class ClientTimers privat
  • 创建霍夫曼树时增加权重时哪个节点向左或向右

    我正在尝试创建一棵霍夫曼树 但阅读互联网上的几个链接时我有点困惑 有些在左侧添加较大 就权重而言 的子节点 有些在右侧添加 所以我的问题是 1 在哪里添加节点 左边还是右边 真的有问题吗 2 我可以在右侧添加权重较大的节点还是在左侧添加权重
  • 使用映射与记录之间的差异以及何时使用

    我正在尝试将一些使用 Map 的 Java 代码映射到 Typescript 代码 我最初的想法是在 Typescript 中使用 Map 但对于我创建的界面来说这并没有成功 相反 我发现 Records 似乎完美地模拟了 Java 的 M
  • Nodejs API 调用将未定义返回到 lambda 函数

    这是将调用 api 的 aws lambda 函数 use strict var request require request exports handler function event context callback let url
  • 添加对旧变更日志文件的更改。液体碱

    我有很多包含数据库初始数据的变更日志文件 之前所有表都位于 Postgres 公共模式中 但现在我已将它们分布在不同模式之间 以便初始数据的更改无法到达表 我可以用初始数据更改所有旧文件并添加 schemaName my schema 还是
  • 从电子邮件标头转换数据

    有谁可以帮助我如何转换电子邮件标题中的数据 我有电子邮件标题中的下一个日期格式 Wed 28 Apr 2010 21 59 49 0400 我需要将它们转换为 mysql 日期或时间戳 谢谢 你应该使用DateTime http php n
  • 让其他人可以在 Xcode 中访问我的开发团队

    我有一个 单一会员 Apple 会员资料 与我合作的一位开发人员需要访问我的开发团队来测试他在其设备上构建的应用程序 Xcode 不允许他在没有该资料的情况下构建应用程序 我怎样才能让他访问开发团队 而不必向他提供我帐户的登录凭据 由于您拥
  • 如何从另一张表中获取精确匹配的数据?

    我在 数据库 工作表中有数据 如下所示 我编写了一个简短的代码来获取与 数据库 工作表中的某些条件匹配的数据 并将其粘贴到另一张 选定记录 工作表上 这是我的代码 Sub CopyData Dim db As Worksheet Dim r
  • 我应该将私有类方法设置为静态吗?

    是否有将类中的私有方法设为静态的最佳实践 我有一堂有几种方法的课 其中一些可以很容易地静态化 因为它们只是处理数据 我应该让它们静态还是让它们保持原样 这更多的是风格问题吗 有性能方面的考虑吗 Edit 方法可以变成静态的 但是应该吗 ht
  • 为什么 strdup 被认为是邪恶的

    我看过一些海报说strdup是邪恶的 对此有共识吗 我使用它时没有任何负罪感 并且看不出为什么它比使用它更糟糕malloc memcpy 我唯一能想到的可能是赚钱strdup众所周知 调用者可能会滥用它 例如 没有意识到他们必须释放返回的内
  • 将秒转换为分钟、小时和天的函数

    问题 编写一个程序 要求用户输入秒数 其工作原理如下 一分钟有 60 秒 如果用户输入的秒数大于或等于 60 则程序应显示该秒数中的分钟数 一小时有 3600 秒 如果用户输入的秒数大于或等于 3600 则程序应显示该秒数内的小时数 一天有
  • 添加 Sprite 的多个实例?

    我正在构建一个自定义图像选择器 它显示 6 个替代版本 然而 照片只显示在第 6 件商品上 model selectedPhoto返回一个 Sprite 并且不会让应用程序正常运行 但是当我使用 model photos ii 每个项目都添
  • 何时在 TypeScript / Angular 中使用接口和模型

    我最近观看了有关 Angular 2 with TypeScript 的教程 但不确定何时使用接口以及何时使用数据结构模型 接口示例 export interface IProduct ProductNumber number Produc