jint 会支持 ecma version6 吗?
最终。 这是一个非常受欢迎的问题/请求,所以我认为它应该值得考虑,更重要的是当前的实现看起来非常完整且没有错误。 新规范将在接下来的几周内发布,所以为什么不开始呢。
计划可能是一一添加对特定功能的支持,并在它们准备就绪时发布。 解析器和对象模型可以首先作为一个整体来完成,就像我在 ES5 中所做的那样,然后处理每个 ES6 特性。 甚至可以是一个共同的努力。
我还需要找到一个好的测试套件来验证功能。
Create 将看看我是否有时间制作 puæl requst :)
为了实现对此的支持,我将打字稿源代码传递给 jint,并将我的源代码传递给它。 它实际上没有我预期的那么慢,而且我有 es6 支持(以及打字稿!)
一些伪代码
var typescript = File.ReadAllText("js/typescript/typescript.js");
var mc = engine.Execute(typescript);
var tsc = mc.GetValue("ts");
var cc = tsc.AsObject().Get("transpile");
var c = cc.Invoke(YOURACTUALSOURCECODESTRING).AsString();
var result = engine.Execute(c);
想过,但从来没有尝试过,太棒了。 我们甚至可以想象一种模式,Jint 会自动加载 typescript 来执行 Ecma2015。 只有一个选择。
或者类似的东西:
var engine = new Engine();
var result = engine.Execute(someScript, Version.Ecma2015);
在第一次调用此选项时,我们只需要从资源文件中加载 TypeScript。 它将在引擎调用中重复使用,并且不会影响当前性能,因为这将按需注入。
我已经取得了相当大的成功。 最初的转译命中很粗糙,但它产生的代码是干净和高性能的。 可能是一个有趣的标志,你只需要跟上不断变化的打字稿版本。
ES6 方面的一些新闻。 在过去的几个月里,我一直在积极致力于实现对 ES6 的支持。 这是一项巨大的工作,我取得了一些进展。
计划是这样的:
新的解析器可能会作为一个单独的包发布,只是为了确保人们可以自己使用它,用 JS 操作做一些疯狂的事情。
好消息是,今天早上我有一个完整的 ES6 解析器。 它还不是可打包的形式,但 Esprima 的所有单元测试都在工作。 它包括语法错误和范围/位置信息。
一旦解析器被集成,每个人都将能够帮助实现新功能,并从中受益。
它现在在 github 上: https :
创建 :) 谢谢 :)
@dested :我尝试了建议的代码来导入打字稿并使用转译器。
执行 typescript.js 文件(版本 2.6.2)时,我收到此“消息:Esprima.ParserException:第 27 行':对象文字中不允许重复的 __proto__ 字段”
还有其他人像这样使用打字稿吗?
@dested你能提供一些演示项目吗?
总的来说:我喜欢在 Jint 中支持打字稿的想法。
但是,我确实认为这不是它的主要关注点。
所以也许应该有一个额外的 jing-typescript 包
例如
@gentledepp
那是 2016 年年中,我使用的是 TypeScript 1.6,我还没有在更高版本上尝试过。 代码工作是这样的
var typescript = File.ReadAllText("js/typescript/typescript.js");
var typescriptProgram = engine.Execute(typescript);
var tsc = typescriptProgram.GetValue("ts");
var transpileFunc = tsc.AsObject().Get("transpile");
var jsOuput = transpileFunc.Invoke(typeScriptProgram).AsString();
var jsProgram= engine.Execute(jsOuput);
请按照 #343 获取更新,事情正在进展中,更新已发送到那里。
最有用的评论
为了实现对此的支持,我将打字稿源代码传递给 jint,并将我的源代码传递给它。 它实际上没有我预期的那么慢,而且我有 es6 支持(以及打字稿!)
一些伪代码