I have seen it suggested that Nashorn in JDK 9 should be able to parse TypeScript, but when I try to use it like this:
Parser parser = Parser.create();
CompilationUnitTree tree = parser.parse(file, new InputStreamReader(stream), null);
on the examples from https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html the plain JavaScript example works, but the next example that adds a type declaration, gets an error:
jdk.nashorn.internal.runtime.ParserException: a.ts:1:23 Expected , but found :
function greeter(person:string) {
^
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.AbstractParser.error(AbstractParser.java:297)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.AbstractParser.error(AbstractParser.java:282)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.AbstractParser.expectDontAdvance(AbstractParser.java:353)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.AbstractParser.expect(AbstractParser.java:340)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.formalParameterList(Parser.java:3991)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.formalParameterList(Parser.java:3966)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.functionExpression(Parser.java:3802)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.statement(Parser.java:1099)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.sourceElements(Parser.java:909)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.program(Parser.java:844)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.parse(Parser.java:325)
at jdk.scripting.nashorn/jdk.nashorn.internal.parser.Parser.parse(Parser.java:285)
at jdk.scripting.nashorn/jdk.nashorn.api.tree.ParserImpl.parse(ParserImpl.java:117)
at Main.process(Main.java:299)
at Main.main(Main.java:113)
which certainly looks like the parser just hasn't heard of TypeScript, and there isn't an obvious parameter for language variant.
Is there a way to get this to work, that I'm overlooking?
No. Nashorn Parser API does not support anything other than ECMAScript ES5.1 and ES6 versions. I wrote http://mail.openjdk.java.net/pipermail/nashorn-dev/2015-February/004170.html and I didn't say anything about TypeScript in that email.