The problem with Typescript is that too many Typescript developers don't understand Javascript itself, which is an completely different issue. That and the obsession for some to reproduce JEE everywhere including in the browser...
I really dislike this tendency of certain Javascript developers to qualify combining OOP with Javascript as "not understanding the language".
But before that there were countless competing models for creating objects or object factories.
Obviously, JavaScript is an object oriented language, too. You cannot escape that fact if you are determined to make the browser paint anything.
Classes effectively solved the "How?"
To pretend you don't need object orientation in JavaScript is really trying hard to make JavaScript into an entirely different language.
Java and C# had object factories even though in those languages classes could not be avoided. People wanted classes because they could not figure how to program without them.
> To pretend…
Don’t use this or new in your code and suddenly a tremendous amount of your code is exposed as unnecessary superfluous vanity. That isn’t making the language into something else.
Object factories were competing models (plural) for creating any object. A total replacement for classes and the like, not an augmentation.
Here's one such model:
function createCar(spec) {
const {speed} = spec;
let position = 0;
return Object.freeze({
move() {
position += speed;
},
get position() {
return position;
}
});
}
And so you'd find this or any other model or multiple competing models in the very same code base.It sucked.
> Don’t use this or new in your code
You are going to be mutating the internal state of objects. Using this and new or not.
Proxies and classes were definitely salvaged from ES4/ActionScript/Jscript.net.
We wouldn't be needing Typescript, had ES4 been adopted (ironically Microsoft was against it, because Silverlight...).
Someone definitely needs to write a book about the whole saga.