admin管理员组

文章数量:1241094

Someone could explain me what is the difference between class and object in typescript.

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

Before I using this

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

Someone could explain me what is the difference between class and object in typescript.

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

Before I using this

var greeter = {
    Name : "",
    Sayhello: function sayhello(){
        console.log("hello");
    }
}
Share Improve this question edited Jul 17, 2024 at 8:24 VLAZ 29.1k9 gold badges62 silver badges84 bronze badges asked May 30, 2016 at 20:18 Jota RodríguezJota Rodríguez 1251 silver badge6 bronze badges 5
  • 5 Please take the time to make the code in the question properly formatted, including note that both TypeScript and JavaScript are case-sensitive languages. If you can't be bothered to make the question clear and correct, why should other people be bothered to answer it clearly and correctly? – T.J. Crowder Commented May 30, 2016 at 20:25
  • Okay, the answer you've received answers the question at the beginning of the question, so I've removed the off-topic one at the end. (Note: SO is a very active place, please don't ask-and-run. Stick around so you can clarify your question in response to queries.) – T.J. Crowder Commented May 30, 2016 at 20:41
  • In example 1: (new greeter).Name is a string – michaelmesser Commented May 30, 2016 at 22:57
  • In example 2: greeter.Name is a string – michaelmesser Commented May 30, 2016 at 22:57
  • They are not the same – michaelmesser Commented May 30, 2016 at 22:57
Add a ment  | 

2 Answers 2

Reset to default 8

It is up to you. Both of these are valid and idiomatic TypeScript:

export class Greeter {

    name: '';

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

and

export const greeter = {

    name : '',

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

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

If you don't have a need for the class, don't use them.

But you may find benefits of classes if you want to:

  • manage your dependencies with Dependency Injection
  • use multiple instances
  • use polymorphism

If you have multiple instances, using classes or prototype constructor functions, allow you to share method implementations across all instances.

Even if you are in a purely functional paradigm, using prototype constructor functions or classes can be useful for creating monads.

If you only have one instance, and do not need for a constructor, an object is is probably fine.

There are many differences. On a basic level, a class is an object that can be used to create other objects with a specific shape and functionality. It provides syntactic sugar for functionality that would be a lot more work to acplish with plain objects and functions.

You should take some time to read about what classes are in the TypeScript Handbook because answering your question in detail would be equivalent to writing a few chapters of a book—especially when tailoring it for TypeScript.

本文标签: javascriptDifference between Class and Object in typescriptStack Overflow