Re:TypeScript Is Surprisingly OK for Compilers
by bornfreddy on Friday August 18, 2023 @06:20AM
(#37173641)
> the fact they aren't syntax sugar over prototypes was a mistake
Totally different meaning.
Re:TypeScript Is Surprisingly OK for Compilers
by shrimpx on Friday August 18, 2023 @06:22AM
(#37173652)
What else would 'syntax sugar over prototypes' mean?
Re:TypeScript Is Surprisingly OK for Compilers
by zdragnar on Friday August 18, 2023 @10:15AM
(#37175907)
There are a few very specific differences. In a subclass, 'this' doesn't exist until you call "super" for example, and the constructor will throw an error of invoked without the "new" keyword. [O]
These differences let you extend built-in things that simply can't be done with old prototype constructor syntax. [1]
[O] I should probably be using a more recent reference like MDN, but the 2ality series always sticks out in my mind whenever "just syntax sugar" comes up: https://2ality.com/2015/02/es6-classes-final.html#safety-che...
[1] https://2ality.com/2015/02/es6-classes-final.html#subclassin...
Re:TypeScript Is Surprisingly OK for Compilers
by shrimpx on Friday August 18, 2023 @03:58PM
(#37181260)
Thanks. It sounds like subclassing built-ins is where transpilers hit a hard wall. Other syntactic features of es6 can be transpiled.
Re:TypeScript Is Surprisingly OK for Compilers
by zdragnar on Saturday August 19, 2023 @10:06AM
(#37188913)
http://kangax.github.io/compat-table/es6/
This page lists features from es6 (and newer versions linked at the top) along with compliance to the spec. First column is the current browser, second is babel+corejs polyfills.
Overall, babel gets about 70% of the way there.
Re:TypeScript Is Surprisingly OK for Compilers
by cxr on Friday August 18, 2023 @10:40AM
(#37176302)
[delayed]
They aren't syntactic sugar? Pretty sure `class Foo { blah() {} }` is equivalent to `function Foo() {}; Foo.prototype.blah = function() {}`.