Hacker News new | ask | show | jobs
by boubiyeah 3256 days ago
Well, I used AS3 and Flex while it occupied a useful niche and at the time it was SO much better than the web platform.

BUT, AS3 was not a great language. The VM was pretty slow (that GC! I'm sure you game devs optimized the hell out of it with object pools and all, but still, modern JS VMs could run circles around Flash's), the static typing was extremely limited: you could only type "Function", not the actual arg and return value types; type inference was non existant, Vector was invariant, etc. Let's face it, Adobe wasn't the best at language design. Typescript is today so much better than AS3 ever was.

4 comments

God Typescript is glorious after dealing with JS for so long.

Just needed to say that.

When Typescript came, I was like. Yay! Someone made JS become AS3 like. That's when I seriously got into javascript. Flash could do some amazing things back in the day, They had GPU accelerated graphics, microphone, image manipulation, video, and a whole host of other things that HTML didn't have. I think Flash inspired browsers to do better.

Now it can die happily.

You should look at C# in .NET core as well. C# was designed by the same guy as Typescript and Delphi, the famous language designer Anders Hejlsberg.

His languages are the most logical and elegant I have used, all truly pleasant to work with. Building a decent language that compiles down so cleanly to Javascript is a minor miracle.

exactly, loving the typing of AS3, typescript is what made me switch over to reimplementing everything in javascript.
I tried TypeScript yesterday and while I really love the language, the tooling was wayyyy too complicated and confusing. All I wanted was to make a dead simple hello-world node app that let me write it in VS Code, and recompile the TS to JS every time I saved. Suddenly I had to learn about tsconfig.json, had to install nodemon and have a process running in the background that I'm sure to forget to kill later, and I have no idea how either tsc or ts-node plays into any of this... in the end I just decided to go with ES2016 and be done with it. Too bad, because I really like having type information available, especially for catching bugs. I enabled VS's "pretend JS is TS" setting so it catches some errors, but it's pretty hacky and not thorough, and I don't get to specify types in my program. Really wish I could get a dead simple TS app figured out.
1) tsc --init # creates a tsconfig.json, no need to edit it

2) tsc --watch # rebuilds every .ts file on save

There is no step 3.

Hey this is pretty great, thanks! Dunno why I didn't consider it to be that simple. But it really is working. Well, along with `npm install @types/node --save` which I found somewhere else, so it quits complaining about 'require' not being found.
Glad it worked! I think it's a failure by the TypeScript team to not make this flow more front and center.

You are right, I forgot about installing typings. Instead of require you should use ES6 "import" (which TS compiles to require anyway) to get more type checking. But when you do that you'll see more of my missed step, which is `npm install @types/XYZ` for each XYZ package you use.

As soon as you start introducing a separate build tool (like gulp or whatever) things get super messy super fast but not for any interesting reason. Using `tsc --watch` also means it does caching across builds so it's faster than using gulp unless you're careful to configure it.

This advice is gold, thanks. But what I'm finding is that it's too painful to create a TypeScript project that has both a front-end and a back-end by incrementally building it like this, unless the front-end is just a set of static files with no compilation steps.
> 1) tsc --init # creates a tsconfig.json, no need to edit it

hm... i reckon that if one doesn't need to edit a 'default' config file, perhaps the file doesn't really need to exist.

Will this be fixed when a "canonical" docker container comes out for it? Or perhaps two containers - 1 for dev & dev dependencies and 1 for "prod"?
You could always just opt for a typed language.
Which typed language do you prefer to run in browsers?
The comment I was replying to was referring to Node, so based on the context I wasn't discussing the browser.
On that note, I wonder if we'll ever see type="text/typescript" in the browser due to how much traction it's gaining so quickly, and considering it's basically always ESNext but with types.
Not likely. WebAssembly is the path to expanding language support in the browser now.
i have the same feeling about clojurescript. sanity in your browser, at last.
> the static typing was extremely limited: you could only type "Function", not the actual arg and return value types

You can type args and returns. One of the biggest things I relied on when I coded AS3

I meant for higher order functions, callbacks, etc.

e.g, see the signature of Array.map:

map(callback:Function, thisObject:* = null):Array

To say nothing of their ridiculous security sandbox design... I remember trying to make banner ads with dynamic price data and between all the various detached hosting abstractions and ActionScript's security requirements (in a time before this kind of setup was common) it was a hell of a project.
I'm glad that someone else said that. I really hated AS3 as a language and was really happy that the ECMAScript spec didn't take their ideas. Typescript does everything that AS3 could do, but does it in a way that is much more friendly to the JavaScript way.