JavaScript 和 TypeScript 是否有等价于 Julia 的元编程和宏?
Is there an equivalent of Julia's metaprogramming and macros for JavaScript and TypeScript?
我习惯了 Julia 宏(元编程),这是一种非常方便的生成灵活代码的方法。
https://docs.julialang.org/en/v1/manual/metaprogramming/
是否有 JavaScript 或 TypeScript 的等效项。比如一个包或者一种工作方式?
不,没有等效项。 ECMAScript 和 TypeScript 都没有宏。
规范流程Decorators, which would allow you to do a tiny subset of what you can do with macros, but that proposal is still in Stage 2有提案。
目前没有官方提议将宏添加到 ECMAScript(我查看了所有第 3 阶段、第 2 阶段、第 1 阶段和第 0 阶段提议的列表),也从未有过(我还选中了不活动和撤回提案)。 是然而关于它的反复讨论,至少因为在某一时刻,一些 Scheme 设计者也是 ECMAScript 委员会的成员。
在 Julia、Scheme、Rust、Boo、Nemerle 和 co 等语言中使用宏可以实现什么。在 ECMAScript 社区中,通常使用 source-to-source compilers(有时称为 transpilers)来解决。其中最受欢迎的是Babel。 Babel 主要 用于“编译掉”较新的语言特性,即允许程序员使用最新的语言特性甚至 not-yet-released 提案,但仍然 运行在只有旧版本语言可用的环境中编写代码。
有,然而,一些third-party宏库可以通过……你猜对了……source-to-source转译将宏添加到ECMAScript。其中之一是 Sweet.js.
我习惯了 Julia 宏(元编程),这是一种非常方便的生成灵活代码的方法。
https://docs.julialang.org/en/v1/manual/metaprogramming/
是否有 JavaScript 或 TypeScript 的等效项。比如一个包或者一种工作方式?
不,没有等效项。 ECMAScript 和 TypeScript 都没有宏。
规范流程Decorators, which would allow you to do a tiny subset of what you can do with macros, but that proposal is still in Stage 2有提案。
目前没有官方提议将宏添加到 ECMAScript(我查看了所有第 3 阶段、第 2 阶段、第 1 阶段和第 0 阶段提议的列表),也从未有过(我还选中了不活动和撤回提案)。 是然而关于它的反复讨论,至少因为在某一时刻,一些 Scheme 设计者也是 ECMAScript 委员会的成员。
在 Julia、Scheme、Rust、Boo、Nemerle 和 co 等语言中使用宏可以实现什么。在 ECMAScript 社区中,通常使用 source-to-source compilers(有时称为 transpilers)来解决。其中最受欢迎的是Babel。 Babel 主要 用于“编译掉”较新的语言特性,即允许程序员使用最新的语言特性甚至 not-yet-released 提案,但仍然 运行在只有旧版本语言可用的环境中编写代码。
有,然而,一些third-party宏库可以通过……你猜对了……source-to-source转译将宏添加到ECMAScript。其中之一是 Sweet.js.