4 ms·
It's TypeScript! It is "a strict syntactical superset of JavaScript, and adds optional static typing to the language." [1], and compiles to standard JavaScript.
by ashtonbaker 7y ago
It's TypeScript! It is "a strict syntactical superset of JavaScript, and adds optional static typing to the language." [1], and compiles to standard JavaScript.
[1] https://en.wikipedia.org/wiki/TypeScript https://en.wikipedia.org/wiki/TypeScript
- ludston 7y agoA more correct word for converting code from one programming language into another is "transpile".
- antisemiotic 7y agoIt's always "from one language to another", sometimes the destination is machine language. The output is generally not meant to be meant to be human-readable in any case. "Transpile" is an ugly and unnecessary word, please don't push it as "more correct".
- chrisseaton 7y agoIt's just a more specific word. You can say all words are unnecessary because you can express the same thing using more words.
- antisemiotic 7y ago"Transpilation" and "compilation" describe the exact same concept. From user's perspective, readable code is translated into runnable code. From theoretical perspective, code in a more complex language is translated into a less complex language while preserving semantics. From a compiler writer's perspective, it's a totem pole of compilers, with at least one middle-level language usually. Plenty of people use the term "compiles to JavaScript" to describe languages like TS or Elm. It's just some overly pedantic people insist on the term "transpile" when the target is also, in a completely unrelated way, used to write code directly by a significant number of contemporary programmers.
- nwienert 7y agoTranspile is a superset or compile just like typescript is a superset of JavaScript. Transpile implies translating but not into a less complex language but rather onto a similar runtime. So typescript is dynamic just like JavaScript, and they share much of their semantics. So transpile means compile but onto a similar runtime with similar runtime semantic behavior.
- antisemiotic 7y agoIn that case surely you'd agree that there are hardly any compilers in wide use these days - more often than not the first step of a modern compiler is translation into a similar but less expressive intermediate language. Or does it only count as "transpilation" if the intermediate representation is an already existing language, thus making the distincion purely based on the history of a language, not the implementation?
- chrisseaton 7y ago> "Transpilation" and "compilation" describe the exact same concept. No I think transpile implies compiling from one level of abstraction to another similar level of abstraction, which is quite different in theory and practice to compiling to a much lower level of abstraction. It's a useful word to have in your communication toolbox.
- randomdata 7y agoI agree with your overall definition. In fact, the dictionary definition of compile does also suggest that you are transforming to a 'lower level' so, in strictness, there is a need for a word to fill the void that you suggest transpile provides. But I do wonder about the actual usefulness of the distinction. If someone says that they compile Typescript to Javascript, I'm not sure that anyone is going to be confused about what is meant, even if violates the letter of the dictionary definition. Ultimately, english is fluid and is always correct as long as those in communication are able to understand each other. For transpile to be a useful word in the toolbox, there must be a circumstance where compile cannot be used to convey the same idea. When might that be?
- brianzelip 7y ago> It's always "from one language to another“ Hmmm, sometimes it’s “from one version of a language to another version of the same language”. As is the case with Babel[0] and JavaScript. [0] https://babeljs.io/ https://babeljs.io/
- LordDragonfang 7y agoI mean, arguably ES6 and TS are as close or closer to being "the same language" than ES6 and Babel targets.