无需发出要求的打字稿智能感知
Typescript intellisense without emitting require
我的 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 编译选项 - 包括不需要的 requires:
var React = require("react");
var ReactDOM = require("react-dom");
导致页面执行出错,因为React和ReactDOM都是react.js定义的全局名称,没有"require"函数可用
有没有一种方法可以将这些名称声明为 TypeScript,而无需为每个名称发出实际要求?
否则 - 我正在尝试做的事情有什么问题?我错过了什么?
Isn't there a way to declare those names to TypeScript, without emiting the actual require for each of them?
有。使用 global 版本的 TypeScript 定义:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/react/react-global.d.ts
Otherwise - what is wrong in what I'm trying to do? What am I mising?
使用全局模块不是一个好主意。一旦扩展到大约 50 个文件(发生得很快),您将 运行 遇到问题 https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md
我的 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 编译选项 - 包括不需要的 requires:
var React = require("react");
var ReactDOM = require("react-dom");
导致页面执行出错,因为React和ReactDOM都是react.js定义的全局名称,没有"require"函数可用
有没有一种方法可以将这些名称声明为 TypeScript,而无需为每个名称发出实际要求?
否则 - 我正在尝试做的事情有什么问题?我错过了什么?
Isn't there a way to declare those names to TypeScript, without emiting the actual require for each of them?
有。使用 global 版本的 TypeScript 定义:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/react/react-global.d.ts
Otherwise - what is wrong in what I'm trying to do? What am I mising?
使用全局模块不是一个好主意。一旦扩展到大约 50 个文件(发生得很快),您将 运行 遇到问题 https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md