将TypeScript转换为JavaScript

时间:2012-10-01 18:16:05

标签: javascript typescript

我想知道如何以跨平台的方式将TypeScript转换为JavaScript。我知道node package manager for typescript的可用性,但是还有其他可以在服务器端使用的替代方案吗?

12 个答案:

答案 0 :(得分:31)

TypeScript编译器是用TypeScript构建的,因此可以作为JS文件(tsc.js)使用,可以使用任何ES3兼容的VM或JS实现来运行。

也就是说,编译器的当前文件I / O基础结构仅支持Node和Windows Scripting Host文件API。如果您想建议支持其他环境,请随时通过GitHub site(以前为CodePlex

与团队联系

答案 1 :(得分:17)

简短版本:如果可以,请使用Node。现在它变得不可避免了。

也许这不是你想要的答案,但正如大家所提到的,编译器是一个JS文件,因此,你的选项是执行JS文件的选项。

在Windows中,有两个明显的节点,即Node和Windows Script Host。

您已了解节点,另一个选项是所有Windows版本附带的组件(我认为),您可以这样做:

cscript path/to/tsc.js source-file.ts

您可以通过以下方式查看所有编译器选项:

cscript path/to/tsc.js

在Linux上我假设您应该能够使用(除了节点):

    <击>
  • V8独立shell,将nodecscript替换为v8-shell
  • ExecJS https://github.com/sstephenson/execjs
  • 所选平台上可用的任何其他JS跑步者(例如,另一个答案提到Rhino)

更新:另一个答案表明编译器API只与节点和Windows脚本宿主(cscript工具)兼容,因此,如果正确,那么在Linux上你需要Node来编译TypeScript。 / p>

如果您正在寻找类似apt get tsc(或Linux / Mac软件包管理器之类的东西)的东西,我认为没有。

我记得在某处读过I / O针对Node和Windows Script Host进行了优化,因此,如果您遇到选项问题,如果寻求平台独立性,您可能最终会使用Node。

更新:此处的另一个答案确认了相同的兼容性。

答案 2 :(得分:5)

具体来说,在服务器上(假设您的服务器有Node.js可用),您只需运行:

node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]

您可以在没有任何输入文件名的情况下运行该命令,以查看tsc.js的命令行帮助。

答案 3 :(得分:4)

在命令行中,您可以使用ts-node:

npm install ts-node

然后像这样调用命令:

tsc file.ts --outFile file.js

答案 4 :(得分:3)

如果您需要定位Java,那么您可以在构建过程中使用Rhino引擎运行tsc.js。

答案 5 :(得分:3)

我有一个项目,它将Typescript编译成Java中的Javascript:

https://github.com/martypitt/typescript4j

正如其他答案中所讨论的,这会使用Rhino,因此不依赖于npmnode

以下是一个例子:

// Instantiate the compiler:
TypescriptCompiler compiler = new TypescriptCompiler();

// Compile a string:
String output = compiler.compile("class Greeter { greeting: string; }");

// Or, compile and output to a file:
compiler.compile(new File("example.ts"), new File('output.js'));

我在another project - 'Bakehouse'中使用它来在Spring环境中对打字稿资源进行即时编译

答案 6 :(得分:2)

编译ts - &gt; js:node可用于所有常见平台,所以当你已经拥有tsc.js时,我无法理解为什么你想要一个tsc.java。安装节点没什么大不了的。实际上,它比Java更容易。

获得proj.js文件后,可以将其复制到您希望使用的部署平台。

从我的角度来看,JavaScript - 或者更准确地说ECMAScript是Java的替代品。所以我很高兴我不必与JVM等争论使用该工具。但如果您更喜欢Java,那为什么还要打扰JS?

答案 7 :(得分:1)

SublimeText2 Trick 您可以直接从SublimeText2(您需要节点)将短划线转换为javascript:

使用以下内容在Typescript.sublime-build中创建/Sublime Text 2/Packages/User文件:

{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}

然后,现在,您可以使用ctrl + B或cmd + B

来转换代码

答案 8 :(得分:1)

我一直在玩这个,可以用javascript编译TypeScript,代码如下:

<script src=typescript.js></script>

<script>

var scriptText = ""
        + "/// <reference path=\"test.ts\"/>" + "\r\n"
        + "class Car {"
        + "     constructor (private name: string) { } "
        + "     getName() { "
        + "         var juice = new Juice();"
        + "         return name; "
        + "     } "
        + "} "
        + "var car = new Car('Subaru Impreza');"
        + "console.log(car.getName());";





var TextWriter = function () { };

TextWriter.prototype = {
collected: '',

Write: function (sc) {
    this.collected += sc;
},
WriteLine: function(sc) {
    this.collected += sc + '\n';
},
toString: function() {
    return this.collected;
}
};

var output = new TextWriter();
var tsc = new TypeScript.TypeScriptCompiler(output);

var script = tsc.addUnit(scriptText, "");

tsc.emit();

console.log(output.toString());

</script>

但这并不完全理想。我正在尝试运行一些东西,所以我可以在C#中将TypeScript转换为JS(使用Javascript .NET),但是我在ts.addUnit调用时遇到堆栈溢出。

答案 9 :(得分:1)

这对我有用:

首先,安装了watermark.evented = false; 节点模块&gt;&gt; typescript。这提供了命令行实用程序npm install -g typescript

接下来,tsc

  • 这将tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts transpilegulpfile.ts个文件gulp-config.tsgulpfile.js gulp-config.js。我们提供typings/tsd.d.ts文件作为正确转换的参考。
  • typescript 节点模块涵盖了许多选项&gt;&gt; tsc -h指定输出目录或文件等

希望这有帮助。

答案 10 :(得分:0)

您可能不想使用ts-node,因为它很慢,请按照以下步骤进行快速.ts文件编译(确保已安装节点):

  1. npm i -D @types/node typescript nodemon

  2. npx tsconfig.json,然后从列表中选择node。您可以根据需要随意对其进行修改。

  3. 在项目根目录中创建文件名src/index.ts

  4. 然后在您的package.json中,添加以下2个脚本:

    "scripts": { "watch": "tsc -w", "dev": "nodemon dist/index.js" },

  5. 然后使用:

    npm run watch

    npm run dev

而且,它会自动在.ts文件中查找更改,并且您可以在终端中随时查看编译后的文件输出!

答案 11 :(得分:0)

如果您使用的是“firebase -tool”,您可以使用

npm run build

在您的函数目录中。