Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Scala-ts – Scala to TypeScript compiler (github.com/miloszpp)
66 points by miloszpp on Dec 9, 2016 | hide | past | favorite | 14 comments



To dispel misconceptions: from the top of the readme:

"scala-ts is a simple tool which can generate TypeScript interfaces and classes from Scala case classes."

Not really what I call a compiler. This is more a REST endpoint consumer generator.

PS: for the reverse exercise, here is a syntactical TypeScript to Scala translator: https://github.com/densh/TypeScript/tree/topic/scala-emitter...


Ah, thank you. I was already trying to figure out the why I would need to compile my Scala down to typescript, presumably so I could then compile that down to JavaScript


If you want to compile your Scala code to JavaScript, there's already a widely accepted and stable solution: https://www.scala-js.org/


Funny thing is you don't even need a compiler to do what the project is ostensibly doing which is just stub generation aka struct type mapping (i.e. data objects). You can use reflection (you only have to do it once so its not slow). I have done this with Java (use reflection to generate JavaScript stubs).


Reflection APIs and compiler internals actually tend to be quite similar. In the case of Scala in particular, the reflection API was literally produced by scooping out part of the compiler into a separate library and trying to polish (or hide) the rough edges. The effort wasn't entirely successful in producing an easy-to-use API, but the in-development successor project, scala.meta, is still very compiler-y (just because, again, compiler internals tend to look a lot like reflection APIs).

Further, it is my belief that your project actually was a compiler, whether you thought of it as that or not!


It's a compiler but not a Scala compiler. Rather it's a compiler for a smaller language, whether one thinks of and names that language or not.

(I actually recommend pushing that line of thought all the way through, and using something like thrift (with Scrooge) for this kind of problem. The thrift compiler is a compiler and the thrift IDL is a defined and specified language rather than an ad-hoc subset of Scala)


Handy if you're already serializing case classes to be consumed by a TypeScript frontend, but otherwise I'd suggest looking into Scala.js.


I love using Scala on the server and Typescript in the browser. And adjusting ts type definitions by hand gets tiresome very quickly. So I look forward to trying this out.


Let me ask the obvious. Can this generate TSX from Scala?


Should have opened the link:

scala-ts is a simple tool which can generate TypeScript interfaces and classes from Scala case classes


That doesn't answer the question. TSX is typescript-JSX (e.g., the typescript-typed React node-building language inside javascript).


Why not? Anyone asking about JSX should get their answer from that description.


Is this any better than scala.js?


No. To be more precise, it does a completely different job. As I said in another comment, it isn't actually a Scala compiler. Comparing it to Scala.js is nonsense to begin with.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: