【发布时间】:2016-04-28 10:25:04
【问题描述】:
我的 HTML 包含以下内容:
<script src="js/vendor/react.js"></script>
<script src="js/vendor/react-dom.js"></script>
<script type="text/javascript" src="my-react-component.js"></script>
...我正在尝试在 Visual Studio 2015 中编写一个简单的 TSX 文件,以转换为 my-react-component.js:
/// <reference path="../../typings/tsd.d.ts" />
class ExampleApplication extends React.Component<any, {}> {
render() {
return <p>{this.props.message}</p>;
}
};
ReactDOM.render(
<ExampleApplication message="Hello, world" />,
document.getElementById('container')
);
我已经从 DefinitelyTyped 导入了 react.d.ts 和 react-dom.d.ts 并将它们包含在我的 tsd.d.ts
问题是:TypeScript 将无法识别“React”和“ReactDOM”,除非我明确导入它们:
import * as React from "react";
import * as ReactDOM from "react-dom";
这对于编辑 .tsx 非常有效(事实上,我可以为这些命名空间获得完整的 IntelliSense)。
但是转译的 .js - 使用“React” JSX 编译选项 - 包含不需要的需要:
var React = require("react");
var ReactDOM = require("react-dom");
这会导致页面执行出错,因为 React 和 ReactDOM 都是 react.js 定义的全局名称,并且没有可用的“require”函数。
有没有办法向 TypeScript 声明这些名称,而无需为每个名称发出实际的需求?
否则 - 我正在尝试做的事情有什么问题?我错过了什么?
【问题讨论】:
标签: reactjs typescript visual-studio-2015 intellisense react-jsx