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