TypeScript, React and Gulp.js - defining react
TypeScript, React and Gulp.js - defining react
我正在尝试制作一个工作流,在那里我可以使用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;
当我忽略它时,我得到错误
错误TS2304: Cannot find name 'React'. '
将.tsx
编译为.js
(但它仍然编译为JSX,我可以使用输出)。当我把它放进去时,我可以编译没有错误,但是当我试图在浏览器中使用该文件时,我得到一个Uncaught ReferenceError: __React is not defined
,当然。
这是我的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" />
在这里我可以使用typescript编写react模块,并通过gulp自动编译成js
强烈建议不要使用全局模块。相反,用--module commonjs
编译,拥抱react/webpack/nodejs生态系统。
您可以在这里查看示例应用程序:https://github.com/basarat/tsb/tree/master
相关文章:
- React重新渲染但未显示正确的组件
- React组件等待所需道具进行渲染
- React中的数据集表示
- Webpack开发服务器和React服务器端渲染
- React Redux错误页面管理
- react.js中的密钥绑定
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React:按键的性能提升
- 如何在react js中从一个页面导航到另一个页面
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- 如何使用带有Preact的React路由器
- 使用Jest测试React Native应用程序
- 为什么我的点击事件没有使用 react js 触发
- React 15使用空字符串删除输入值
- react组件中的绑定方法
- 是否存在React Native“;WEB代码安全防护”;
- 如何在react js中移动第二个组件
- TypeScript, React and Gulp.js - defining react