In a talk with a friend about the use of JS prototypes vs classes, he told me that big systems or…
Ranieri Teixeira

Those who think that ES6 `class` is needed for “programming in the large” have a fundamental misunderstanding of what ES6 `class` is.

It does not add any “missing” features to JS. It simply supplies syntactic sugar for a pattern (antipattern?) that was already common in JS — and that sugar is less flexible than the underlying prototype system on which it’s built (hence the 75% occurance of “ugly” unreproducible refactor cases in the cited paper).

ES6 classes are less flexible and less expressive than prototypes, composition, and dynamic object extention, and ES6 `class` does not supply any form of “type safety” benefit, either.

In other words, if you think you need classes to build large apps, what you really need is a better understanding of how objects and application architecture work in JavaScript.