Class 和打字稿中的对象之间的区别

Difference between Class and Object in typescript

谁能给我解释一下 class 和打字稿中的对象有什么区别。

class greeter{
  Name: string;
  Sayhello(){
    console.log("hello")
  }
}

在我使用这个之前

var greeter = {
    Name : "",
    Sayhello: function sayhello(){
        console.log("hello");
    }
}

由你决定。这两个都是有效且惯用的 TypeScript:

export class Greeter {

    name: '';

    sayHello() {
        console.log('hello');
    }
}

export const greeter = {

    name : '',

    sayHello: () => {
        console.log('hello');
    }
}

// if you need just the type of greeter for some reason
export type Greeter = typof greeter; 

如果您不需要 class,请不要使用它们。

但是如果您想要,您可能会发现 classes 的好处:

  • 使用依赖注入管理你的依赖关系
  • 使用多个实例
  • 使用多态

如果您有多个实例,使用 classes 或原型构造函数,允许您在所有实例之间共享方法实现。

即使您处于纯函数范式中,使用原型构造函数或 classes 也可用于创建 monad。

如果您只有一个实例,并且不需要构造函数,那么一个对象可能就可以了。

存在 许多 差异。在基本层面上,class 是一个对象,可用于创建具有特定形状和功能的其他对象。它为使用普通对象和函数完成更多工作的功能提供语法糖。

您应该花一些时间阅读 TypeScript Handbook 中的 class 内容,因为详细回答您的问题等同于写一本书的几章——尤其是在对其进行剪裁时对于 TypeScript。