Hello, everyone 👋. I am a newcomer when it comes to JavaScript. I come from an OOP background (C# and Java). I’ve recently learned that ES6 has a class
keyword that preforms similarly (but not exactly) to common OOP languages. Normally I would be inclined to use this feature in my projects; however, it came to my attention that the usage of class
in JavaScript seems to be heavily discussed (mostly in a negative light). My questions to this community are:
- Should it be used often, sparingly, or be outright avoided?
- What are its advantages and disadvantages?
- Are there specific cases where the usage of
class
excels?
Please share your thoughts.
I don’t like/use the
class
keyword in JS, because I quite like the paradigm with prototypes & stuff, and that keyword tries to make it fit into a totally different paradigm, which doesn’t really work IMHO.With TS, I find it even more useless, because I can use TS as a functional language, with POD, functions and interfaces only. I’ve written entire projects without ever using and needing this keyword, which is a proof IMHO that it’s an unnecessary addition. Not sure how unpopular is my opinion tho 😅
BTW, I’ve developped a few strats to have my own style in TS that I like quite a lot. I can tell more if you’re interested.
I don’t like/use the
class
keyword in JS, because I quite like the paradigm with prototypes & stuff, and that keyword tries to make it fit into a totally different paradigm, which doesn’t really work IMHO.I’ve read somewhere that Javascript is more of a prototype-oriented language rather than an object-oriented one. Do you agree with this?
BTW, I’ve developed a few strats to have my own style in TS that I like quite a lot. I can tell more if you’re interested.
Thank you! But maybe not right now; I’m still learning the basics. Have you considered write an article about it? 😮
JavaScript is a prototype-based language. The class keyword uses prototypes.
Classes are great for structuring code.
If you’re just starting out, use them. To at least get a feel for them. Even if you later decide against them - in general or selectively.
Whatever you do, I’d recommend using Typescript to give you some type safety with your JS.
I hate the heavy JS env it requires.
Adding jsdoc to standard JS makes the ide provide some type help without TS. I find that to be a good, light alternative.
The IDE support based on JSDoc is typescript (at least it is in all the ones I know about). They’re just using TypeScript’s JSDoc annotation support under the hood.
I’m not sure what you mean about the “heavy JS env” though, it’s just calling
tsc
in yourpackage.json
or whatever build script you’re using (or even if none, it’s one command).I don’t have nodejs installed. That’s the heavy environment it depends on.