我有一堆没有任何方法甚至构造函数的纯数据“类”(在 .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 class
es —— 使用 namespace
/module
代替。
关于javascript - 用于 TypeScript : Class or Interface? 中的纯数据对象的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067961/