51

クロスプラットフォームの方法でTypeScriptをJavaScriptに変換するにはどうすればよいのでしょうか。typescript用のノードパッケージマネージャーの可用性については知っていますが、サーバー側で使用できる他の選択肢はありますか?

4

12 に答える 12

32

TypeScriptコンパイラはTypeScriptに組み込まれているため、tsc.jsほぼすべてのES3準拠のVMまたはJS実装を使用して実行できるJSファイル()として利用できます。

とはいえ、コンパイラの現在のファイルI / Oインフラストラクチャは、ノードおよびWindowsスクリプティングホストファイルAPIのみをサポートします。別の環境のサポートをお勧めしたい場合は、GitHubサイト (以前のCodePlex)でチームに連絡してください。

于 2012-10-01T18:36:59.607 に答える
24

短いバージョン:可能であればノードを使用します。やむを得ない昨今です。

たぶんそれはあなたが望む答えではないかもしれませんが、誰もが言ったように、コンパイラはJSファイルなので、あなたのオプションはJSファイルを実行するオプションです。

Windowsには、ノードとWindowsScriptHostの2つの明らかなものがあります。

あなたはすでにノードについて知っています、他のオプションはWindowsのすべてのバージョンに付属しているコンポーネントです(私は思う)、あなたはこれを次のように行うことができます:

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

次の方法ですべてのコンパイラオプションを確認できます。

cscript path/to/tsc.js

Linuxでは、(ノードに加えて)次を使用できるはずだと思います。

  • V8スタンドアロンシェル、置換nodeまたはcscriptv8-shell
  • ExecJS https://github.com/sstephenson/execjs
  • 選択したプラットフォームで利用可能な他のJSランナー(たとえば、Rhinoに言及されている別の回答)

更新:別の回答は、コンパイラAPIがノードおよびWindows Script Host(cscriptツール)とのみ互換性があることを示唆しています。したがって、正しい場合、LinuxではTypeScriptをコンパイルするためにNodeが必要になります。

あなたがそのようなものapt get tsc(またはLinux / Macパッケージマネージャーのようなもの)を探しているなら、私はそうではないと思います。

I / OがノードとWindowsスクリプトホスト用に最適化されていることをどこかで読んだことを覚えています。したがって、オプションに問題がある場合、プラットフォームの独立性を求めていると、おそらくノードになってしまうでしょう。

更新:ここでの別の回答は、互換性について同じことを確認しています。

于 2012-10-03T03:23:27.003 に答える
11

具体的には、サーバー上で(サーバーでNode.jsが使用可能であると想定して)、次のコマンドを実行するだけです。

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

ファイル名を入力せずにそのコマンドを実行すると、tsc.jsのコマンドラインヘルプが表示されます。

于 2012-10-01T22:39:10.523 に答える
8

コマンドラインから、ts-nodeを使用できます。

npm install ts-node

次に、次のようにコマンドを呼び出します。

tsc file.ts --outFile file.js
于 2020-04-02T18:54:26.543 に答える
6

TypescriptをJavaでJavascriptにコンパイルするプロジェクトがあります。

https://github.com/martypitt/typescript4j

他の回答で説明されているように、これはRhinoを利用するため、npmまたはに依存しませんnode

次に例を示します。

// 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'));

私は別のプロジェクトでそれを使用しています-'Bakehouse'は、Spring環境内でtypescriptリソースのオンザフライコンパイルを実行します

于 2013-01-17T07:35:15.777 に答える
3

ターゲットにする必要があるのがJavaの場合は、ビルドプロセスの一部としてRhinoエンジンを使用してtsc.jsを実行できます。

于 2012-10-02T11:34:14.213 に答える
2

ts-> jsをコンパイルするには:ノードはすべての一般的なプラットフォームで使用できるため、すでにtsc.jsがあるのにtsc.javaが必要な理由がわかりません。ノードのインストールは大したことではありません。実際、Javaよりも簡単です。

proj.jsファイルを入手したら、それを使用するデプロイメントプラットフォームにコピーできます。

私の見解では、JavaScript、より正確にはECMAScriptはJavaの代替手段です。そのため、ツールを使用するためにJVMなどを混乱させる必要がないことを嬉しく思います。しかし、Javaを好むのなら、なぜJSを気にする必要があるのでしょうか。

于 2012-10-02T00:12:37.650 に答える
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>

しかし、それは必ずしも理想的ではありません。(Javascript .NETを使用して)C#内でTypeScriptをJSに変換できるように何かを実行しようとしていますが、ts.addUnit呼び出しでスタックオーバーフローが発生しています。

于 2012-10-02T17:48:18.247 に答える
1

SublimeText2のトリック SublimeText2から直接typescriptをjavascriptにトランスパイルできます(ノードが必要です):

このコンテンツTypescript.sublime-buildでファイルを作成します:/Sublime Text 2/Packages/User

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

次に、ctrl+Bまたはcmd+Bを使用してコードをトランスパイルできます。

于 2012-10-02T06:46:33.250 に答える
1

これは私のために働いたものです:

まず、typescript ノードモジュールをインストールしました>> npm install -g typescript。これにより、コマンドラインユーティリティが提供されますtsc

次、tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts

  • これtranspileにより、gulpfile.tsおよびgulp-config.tsファイルがgulpfile.jsおよびになりますgulp-config.jstypings/tsd.d.ts正しいトランスパイルのリファレンスとしてファイル を提供します。
  • typescript ノードモジュールは、出力ディレクトリやファイルなどtsc -hを指定するための多くのオプション>>をカバーしています。

お役に立てれば。

于 2016-05-23T04:47:42.457 に答える
1

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、コンパイルされたファイルの出力をターミナルで確認できます。

于 2020-09-21T07:07:35.563 に答える
0

「firebase-tool」を使用している場合は、

npm run build

関数ディレクトリ内。

于 2021-05-12T03:26:42.967 に答える