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

Jot*_*uez -2 javascript ecmascript-5 typescript

有人可以解释我打字稿中的类和对象有什么区别。

class greeter{
  Name: string;
  Sayhello(){
    console.log("hello")
  }
}
Run Code Online (Sandbox Code Playgroud)

在我使用这个之前

var greeter = {
    Name : "",
    Sayhello: function sayhello(){
        console.log("hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 6

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

export class Greeter {

    name: '';

    sayHello() {
        console.log('hello');
    }
}
Run Code Online (Sandbox Code Playgroud)

export const greeter = {

    name : '',

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

// if you need just the type of greeter for some reason
export type Greeter = typof greeter; 
Run Code Online (Sandbox Code Playgroud)

如果您不需要该课程,请不要使用它们。

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

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

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

即使您处于纯函数范式中,使用原型构造函数或类对于创建 monad 也很有用。

如果您只有一个实例,并且不需要构造函数,则对象可能没问题。

  • 你的回答暗示了一些我相信你知道不是真的:他们做同样的事情。他们没有,您可能想澄清他们每个人的作用(因为我认为 OP 对此感到困惑)。 (5认同)

Dav*_*ret 5

许多不同之处。在基本级别上,类是一个对象,可用于创建具有特定形状和功能的其他对象。它为功能提供了语法糖,而使用普通对象和功能则需要完成大量工作。

您应该花一些时间来阅读《TypeScript手册》中的类,因为详细回答您的问题等同于写一本书的几章,尤其是在为TypeScript量身定制时。