News for hackers. Stuff that matters.
Re:Flow vs. Typescript by smt88 on Monday June 06, 2016 @02:01AM (#11844935)
> no messing around in a different but similar language

TypeScript would be a disaster if it subtly changed the semantics of JavaScript. It doesn't, though. It's a superset, so it's really not a "different but similar" language. It's the same language with more features, and the compiler is a great guide to using those features.

Re:Flow vs. Typescript by shados on Monday June 06, 2016 @08:00AM (#11846094)
You mean like how it breaks ES6 classes semantics by making members enumberables? Whoops (I know, if you look at my comment history I used that example all the time...but it's just such an easy one).

When comes the time to pick between shinier output and correctness, TypeScript is perfectly happy to diverge from JavaScript, until it really has no choice (eg: when it moved to ES6 modules)

Re:Flow vs. Typescript by smt88 on Monday June 06, 2016 @10:04AM (#11846816)
Can you provide a link or a non-foobar code example? I tried to Google it, but Google is terrible.

Edit: This is seriously driving me nuts that I can't find anything about it. I hope you see this and respond because I'm incredibly curious!

Re:Flow vs. Typescript by shados on Monday June 06, 2016 @04:43PM (#11850164)
Just try it.

Look at what is the output for the following code:

class Cat { talk() { console.log('meow'); } }

It's something along the lines of:

var Cat = (function () { function Cat() { } Cat.prototype.talk = function () { console.log('meow'); }; return Cat; }());

The methods in that output will be enumerable. They shouldn't be. The reason is (most likely) that the output for non-enumerable class members is TERRIBLE (try the same thing on babel's "Try it out" page), thus why Babel provides loose mode. Still, it's the kind of very subtle things that can bite you in the rear big time.

Then again, if you have good unit tests and move those over too, it won't be a problem I guess :) Also most likely not a problem if you use ES6 as the compile target.

Re:Flow vs. Typescript by smt88 on Monday June 06, 2016 @05:19PM (#11850482)
Wait... are you saying that TypeScript's ES5 output doesn't conform to the ES6 standard??? Why would that matter? There's no standard for it! I thought you were saying that TS -> ES6 was not valid ES6.

Also, properties set on the prototype will fail propertyIsEnumerable() and also hasOwnProperty(). for..in loops should always be filtered by hasOwnProperty() in any sane code base anyway.

(I tested the TS output for that class in Node 5 and my own browser, and the property did not come up in the loop, so I just don't think this is an issue in reality.)

Re:Flow vs. Typescript by shados on Monday June 06, 2016 @08:57PM (#11851669)
The difference is actually somewhat subtle, but is shown here under class/enumerable. Same deal about classes requiring new (a lot of libs actually have bugs for only testing against compiled classes with older Babel and using .apply on classes): https://kangax.github.io/compat-table/es6/

And all I was saying is that the spouting of "TS is a superset of ES6!" is not that simple, since most usage will be (for now) with the ES5 output, where it isn't compliant in subtle ways that do cause problems/bugs. Nothing more :)

Obviously there's even cases here TS is compliant and Babel is not. Babel will call those bugs instead of spouting their compiler has no compromises like a lot of the comments here try to imply to convince people.

Re:Flow vs. Typescript by abritinthebay on Monday June 06, 2016 @02:34PM (#11849097)
> it's really not a "different but similar" language.

Oh so I can just run it in a browser without transpiling? No? Ok then, not the same language: so it's.. different but similar.

Re:Flow vs. Typescript by tkubacki on Monday June 06, 2016 @02:22AM (#11845006)
what if further JS will intersect with TS syntax ? IMO Typescript is "no go". We need clean break with transpile step (eg. Dart) or annotations.
Re:Flow vs. Typescript by smt88 on Monday June 06, 2016 @02:30AM (#11845032)
> what if further JS will intersect with TS syntax

A core value of TypeScript is to support the latest ES20xx standard. The TypeScript team pays attention to JavaScript proposals. In the unlikely event that JavaScript got a type system, it would almost definitely be either TypeScript or Flow. If it wasn't, or if ES standards overlapped with TS syntax, then TS would remove that syntax.

Also, if you don't like the next version of TS, you can just use the old version to transpile your code and then stop using it. Switching to TS is an easily reversible decision, whether it's 1 day or 1 year later.

> We need clean break with transpile step (eg. Dart) or annotations.

You can already have this with Scala.js or any of the other languages that compile to JS. TypeScript is one option among many.

The appeal of TypeScript is that it fixes some things about JavaScript rather than throwing the language away. That's useful because it allows teams to transition from one to the other gradually. Facebook had to do the same thing with PHP, so they created Hack.

Re:Flow vs. Typescript by tkubacki on Monday June 06, 2016 @03:34AM (#11845211)
"then TS would remove that syntax."

So there is no hard promise of TS backward compatibility ?

Sorry but whole TS looks like another EEE - MS will/can argue on some further JS changes for/against based on existing TS codebase. I hope I'm wrong here though.

Re:Flow vs. Typescript by oblio on Monday June 06, 2016 @04:45AM (#11845404)
You want to have your cake and eat it, too. You've just argued for both viewpoints (TS is bad because it does X and because it doesn't do X).

Just be honest and recognize that you dislike Typescript and/or Microsoft. Nothing to be ashamed of, many decisions in tech are based on feelings as much as on cold, calculated decisions.

Re:Flow vs. Typescript by tkubacki on Monday June 06, 2016 @03:13PM (#11849451)
What? I want TS to be different lang transpiled to JS or be annotation to JS but it is: Embrace and extend existing Standard (superset) and when everyone will write TS it will come to Extinguish step. (I like C# and don't like Windows my like not like to MS tech is 50%)
Re:Flow vs. Typescript by cwyers on Monday June 06, 2016 @02:37AM (#11845042)
Microsoft is on the Javascript standards committee. So is Google, which is using TypeScript heavily in Angular 2.0. I would expect that TypeScript and JavaScript are going to continue to be harmonious.
Re:Flow vs. Typescript by danielearwicker on Monday June 06, 2016 @10:47AM (#11847141)
It's very likely that JS will adopt some things tried initially in TS. Both TS and Babel have implemented extensions to the class syntax, for example, which are being considered for JS-future.