我正在尝试创建一个使用golang REST API服务器的Angular应用程序。有一些业务逻辑是用前端使用的typescript编写的。其中一些需要在后端使用。为了避免用golang编写相同的逻辑,我想知道是否有可能在golang中运行typescript代码?我发现SWIG可以在golang中运行C++代码,但我没有找到任何typescript。我知道我可以使用webassembly或其他工具在Angular中运行golang代码,但我不允许用golang编写这些代码。
发布于 2019-10-18 07:47:01
您可以在AssemblyScript ( TypeScript的严格子集)中编写复制的逻辑,将其编译为WebAssembly,然后使用Wasmer等运行时在Go中运行它。
但请记住,AssemblyScript仍处于开发阶段。
发布于 2020-08-25 03:25:29
您可以使用MetaCall,这是一个提供跨语言外国函数接口的库,我在这几年中一直在研究它。基本上,它允许您在不使用WebAssembly的情况下从Go调用TypeScript函数。这些调用都是在相同的过程中完成的,因此您仍然可以获得良好的性能,并使用标准TypeScript而不是该语言的子集。
TypeScript支持仍在开发中,但您可以看到一个从Go here调用TypeScript函数的工作示例。
使用这种方法,您可能可以使用TypeScript逻辑创建一个公共存储库或npm包作为库,然后同时将其导入前端和后端。
您可以在this instructions之后安装MetaCall。安装后,您可以使用以下命令在Go项目中导入npm包:
metacall npm install your-package或者使用git将其添加为sub-module。
稍后,您可以像在example中一样导入TypeScript库。你不需要转换它,MetaCall会处理它的。记住在Go代码中使用import MetaCall并运行go mod tidy。
需要提醒的是,该示例手动编译MetaCall,安装脚本下载一个预先构建的版本。
https://stackoverflow.com/questions/58398287
复制相似问题