我认为这个问题应该是“How to transpile a Java project to TypeScript with JSweet”。
免责声明: JSweet的主要目的不是将现有的 Java 程序转换为 TypeScript。但是,由于 JSweet 生成中间 TypeScript 代码,它可以用作将 Java 程序迁移到 TypeScript 的助手。当然,只有当 Java 库也可用于 JavaScript 时,此迁移才能完全工作,否则,您将必须提供实现或手动将使用的库更改为现有的 JavaScript 库。
您确实可以从 Github 上的 QuickStart 项目开始。当您运行 时mvn generate-sources
,发生的情况是将其中的 Java 源代码src/main/java
转换为 TypeScript。JSweet 生成过程在pom.xml
文件中配置了 Maven JSweet 插件。在这里你可以告诉 JSweet 生成什么以及在哪里生成。在此处查看插件的完整选项列表。所以,根据pom.xml
文件,JSweet被配置为:
<plugin>
<groupId>org.jsweet</groupId>
<artifactId>jsweet-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<verbose>true</verbose>
<tsOut>target/ts</tsOut>
<outDir>target/js</outDir>
<candiesJsOut>webapp</candiesJsOut>
<targetVersion>ES3</targetVersion>
</configuration>
[...]
由于该选项,您将在目录tsOut
中找到生成的 TypeScript 代码。target/ts
因此,为了从那里翻译完整的 Java 程序,您需要将 Java 源代码复制粘贴到src/main/java
. 然后,再次运行mvn generate-sources
。
请注意,要成功执行此命令,您的 Java 文件首先需要从 Java 的角度进行编译。这意味着如果您的 Java 源文件使用其他 Java 库,则这些库必须在您的类路径中可用。因此,与 Maven 下的任何 Java 项目一样,您需要<dependencies>
在pom.xml
.
使用外部 Java 库可能是个问题,因为这些 Java 库可能在 JSweet/TypeScript 中不可用。因此,您很可能会在您的target/ts
目录中生成 TypeScript 文件,但是由于在 TypeScript 中使用了不存在的 API,因此转译会报告许多错误。
从那里,您可以:
- 照原样使用 TypeScript 代码并手动完成转换(这意味着您需要重构代码以使用有效的 TypeScript API 而不是 Java 的)。如果您想切换到 TypeScript 并丢弃 Java 源代码库,这可能是您的首选选项。
- 以与J4TS项目类似的方式,提供您正在使用的 Java API 的 JSweet 实现。该视频展示了如何在 JSweet 中实现小程序 API 的概念验证。如果您想继续使用 JSweet 使用 Java 并使用 Java 工具安全地逐步迁移到 Web,这可能是一个不错的选择。