在 Typecript 中使用接口或类时

我有一个简单的场景,登录,需要用户的输入电子邮件和密码的类型。我需要创建一些类型来获得这个强类型并将其发送到后端。

这是不是应该写成:

export interface UserLogin {
email: string;
password: string;
}
//OR
export class UserLogin {
email: string;
password: string;
}

如何知道何时使用这些方案?

90407 次浏览

在最基本的情况下,同学们本质上是 物体工厂(即。一个对象应该是什么样子的蓝图,然后实现) ,而 接口是一个仅用于 打字检查的结构。

虽然 同学们可能已经初始化了帮助创建对象的属性和方法,但是 接口实际上定义了对象可以具有的属性和类型。

在您描述的场景中,将使用 接口设置 UserLogin 的类型。

发送到后端

通过网络发送类需要额外的努力-如果您使用 JSON 内容类型,您的类将作为普通对象发送到后端代码。有关这个问题,请参见 无数的答案,它告诉我们如何将 JSON 转换回类对象,以便可以调用它的方法。

但是,由于您提出的问题中的类没有方法,所以没有关系,除非后端代码将使用 instanceof执行运行时检查。

为了避免这些问题,使用只有数据成员的接口来表示用于与后端通信的对象。

事实上两个都可以。我建议您使用接口,但如果您只是进行类型检查,因为它是专门为此目的而设计的。

类和接口是强大的结构,不仅方便了面向对象程序设计,而且方便了 TypeScript 中的类型检查。类是一个蓝图,我们可以从中创建共享相同配置的对象——属性和方法。接口是一组描述对象的相关属性和方法,但它们既不提供实现也不进行初始化。

发信人: https://toddmotto.com/classes-vs-interfaces-in-typescript

如果您只是需要声明一个自定义类型,那么使用接口。我的意思是,这里有一个非常实际的原因——它们没有被转换成 JavaScript,所以生成的代码更短。

如果您需要使用构造函数实例化对象,或者使用实例化并注入它们的框架,那么接口将不能工作。然后使用类或抽象类。