如何使用TypeScript的JSX / TSX

时间:2015-08-07 14:32:17

标签: javascript typescript react-jsx transpiler typescript1.6

我们说我有TypeScript 1.6文件包含这一行包含JSX(TSX)的单行:

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是一个空数组,因此没有报告的诊断消息(即错误)。是什么赋予了?

1 个答案:

答案 0 :(得分: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));

享受!