javascript - 用于 TypeScript : Class or Interface? 中的纯数据对象的内容

标签 javascript typescript

我有一堆没有任何方法甚至构造函数的纯数据“类”(在 .NET 世界中我们称它们为 POCO 对象)。示例是客户、产品、用户实体,您可以命名...

最初我开始使用 typescript 类,但现在我认为将它们声明为接口(interface)可能会更好。从性能的 Angular 来看,不仅...只是在 C# 中我们习惯于将接口(interface)用于不同的事物,对于“POCO”(Plain-old-clr-object,或“data-only”对象)我们使用只是一个类(有时甚至是结构)。

在 TypeScript 中声明它们的正确方法是什么?

请注意,我主要了解(我认为)类和接口(interface)之间的技术差异(即该接口(interface)是编译时构造),但我正在尝试找出适合这种情况的那个语义上

P.S.:我见过类似的问题(如 this),但没有一个明确明确地解决这个具体问题,所以请不要将其作为“可能重复”或“基于意见”(因为它不是):)

最佳答案

界面,甚至还差得远。

人们开始编写 TypeScript,他们突然认为他们必须出于某种原因使用类。但他们没有。类是 ES6 的一个特性,它们工作得很好,但如果只是数据,那就只是数据。

使用类的一个主要问题是它们不会像您期望的那样通过网络进行序列化/反序列化,因此 instanceof 检查之类的东西将不起作用。

一个经验法则是,如果没有内部状态与某些方法关联,并且不需要传统的 OO 多态性,则不要使用类。这甚至扩展到 static classes —— 使用 namespace/module 代替。

关于javascript - 用于 TypeScript : Class or Interface? 中的纯数据对象的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067961/

相关文章:

javascript - 在 forEach 中创建子级

typescript - 如何定义自定义对象文字的函数返回类型

typescript - 什么表达式可以替换条件类型中的 "extends object "

node.js - Heroku 部署因不需要的 Node 模块而崩溃

javascript - 获取动态文本的值并将其传递给输入值

javascript - 我可以从另一个文件访问变量吗?

javascript - 内部ajax从for循环jquery获取递增变量

c# - 如何在 Visual Studio Code 中关闭或重新映射 ctrl + 左键单击

javascript - 对象参数接口(interface)的 TypeScript 函数属性...任意数量的 args

javascript - 在上传到服务器之前 chop 文本以进行预览的最佳方法