1

JSX (TSX) を含むこの 1 行を含む TypeScript 1.6 ファイルがあるとします。

var a = (<div></div>);

TypeScript 1.6 (ntypescript npm パッケージ経由でインストール) を使用してコマンド ラインでこれをコンパイルすると、次のようになります。

ntsc --jsx react test.tsx

期待される出力が生成されます。

more test.js
var a = (React.createElement("div", null));

しかし、TypeScript JS API で同じことをしようとすると、うまくいきません。nodeこれらのコマンドを実行してから実行します。

var ts = require('ntypescript');
src = 'var a = (<div></div>);'
d = []; // for diagnostics
compilerOptions =  {jsx: 'react', module: ts.ModuleKind.CommonJS};
res =  ts.transpile(src, compilerOptions, 'test.tsx', d);

私が得る結果は次のとおりです。

'var a = (<div></div>);\n'

また、dは空の配列であるため、診断メッセージ (エラー) は報告されませんでした。何を与える?

4

1 に答える 1

4

ts.JsxEmit.React文字列の代わりに (数値 2 に解決される)を渡す必要が'react'あり、すべてが機能することがわかりました。

これは作業コードです:

var ts = require('ntypescript');
src = 'var a = (<div></div>);'
d = []; // for diagnostics
compilerOptions =  {jsx: ts.JsxEmit.React, module: ts.ModuleKind.CommonJS};
res =  ts.transpile(src, compilerOptions, 'test.tsx', d);

出力:

var a = (React.createElement("div", null));

楽しみ!

于 2015-08-07T14:32:17.050 に答える