【发布时间】:2018-01-23 11:17:39
【问题描述】:
我看到它建议 JDK 9 中的 Nashorn 应该能够解析 TypeScript,但是当我尝试像这样使用它时:
Parser parser = Parser.create();
CompilationUnitTree tree = parser.parse(file, new InputStreamReader(stream), null);
在来自https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html 的示例中,纯 JavaScript 示例有效,但下一个添加类型声明的示例出现错误:
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)
这肯定看起来解析器只是没有听说过 TypeScript,并且没有明显的语言变体参数。
有没有办法让它工作,我忽略了?
【问题讨论】:
-
我看到它建议 JDK 9 中的 Nashorn 应该能够解析 TypeScript 你在哪里看到它的建议?
-
@ElliottFrisch mail.openjdk.java.net/pipermail/nashorn-dev/2015-February/… github.com/Microsoft/TypeScript/issues/1789 tomsondev.bestsolution.at/2016/02/08/… 似乎都在某种程度上暗示 Nashorn 和 TypeScript 可以一起使用。
-
您必须非常希望这些第 3 方 cmets 看起来像是来自 Oracle 的承诺。自 Java 8 以来,Nashorn 也一直在使用。
-
是的。这是正确的。 Nashorn Parser API 中不支持 TypeScript。抱歉,我将该评论转换为“答案”(刚刚)。
标签: javascript java typescript nashorn