javascript – TypeScript,React和Gulp.js – 定义反应

前端之家收集整理的这篇文章主要介绍了javascript – TypeScript,React和Gulp.js – 定义反应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个工作流,我可以使用TypeScript编写React模块,并通过Gulp.js自动编译为 JavaScript.我正在使用TypeScript 1.6.2,gulp-react和gulp-typescript.

我的.tsx文件现在看起来像这样:

/// <reference path="../../../../typings/react/react.d.ts" />
import React = __React;
interface HelloWorldProps {
    name: string;
}

var HelloMessage = React.createClass<HelloWorldProps,any>({
    render: function() {
        return <div>Hello {this.props.name}</div>;
    }
});
React.render(<HelloMessage name="helloooo" />,document.getElementById('test'));

我的问题是这一行:import React = __React;

当我把它拿出来时,我得到了错误

error TS2304: Cannot find name ‘React’.`

在将.tsx编译为.js时(但它仍然编译为JSX,我可以使用输出).当我把它放入时,我可以编译而没有错误,但是当我尝试在浏览器中使用该文件时,我得到一个未捕获的ReferenceError:当然没有定义__React.

这就是我的gulptask的样子:

gulp.task('gui-tsx',function () {
    var tsResult = gulp.src(config.guiSrcPath + 'tsx/app.tsx')
        .pipe(ts({
            jsx: 'react'
        }));
    return tsResult.js.pipe(gulp.dest(config.guiSrcPath + 'jsx'));
});

这有解决方法吗?或者我在这里遗漏了什么?

解决方法

好的,我找到了解决方案.首先通过 tsd安装React全局定义:
tsd install react-global

这将在你的typings目录中创建一个文件react-global.d.ts,你必须在你的根组件文件中引用它(路径是相对的,所以根据你的需要调整它):

/// <reference path="../../../../typings/react/react-global.d.ts" />

之后,它编译没有错误.

猜你在找的JavaScript相关文章