当前位置: 首页 > 知识库问答 >
问题:

无发射要求的打字稿智能感知

商飞航
2023-03-14

我的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文件,将其传输到我的react组件中。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')
);

我已经导入了react.d.tsreact-dom.d.ts,并将它们包含在我的tsd.d.ts

问题是:TypeScript将无法识别"React"和"ReactDOM",除非我显式导入它们,并使用:

import * as React from "react"; 
import * as ReactDOM from "react-dom";

这对于编辑文档非常有用。tsx(事实上,我得到了这些名称空间的完整IntelliSense)。

但是转置的. js——使用“反应”JSX编译选项——包括不需要的要求:

var React = require("react");
var ReactDOM = require("react-dom");

这会导致页面执行出错,因为React和ReactDOM都是React定义的全局名称。js,并且没有可用的“require”函数。

有没有一种方法可以将这些名称声明为TypeScript,而不发出每个名称的实际要求?

否则-我想做的有什么错?我错过了什么?

共有1个答案

万俟华辉
2023-03-14

有没有一种方法可以将这些名称声明给TypeScript,而不发出每个名称的实际需求?

有。使用TypeScript定义的全局版本:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/react/react-global.d.ts

否则,我想做的有什么不对?我错了什么?

使用全局模块是个坏主意。一旦扩展到大约50个文件,您就会遇到问题(发生得非常快)https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md

 类似资料:
  • 我正在typescript中创建一个类,该类的属性是ES6(ECMAscript 2016)映射,如下所示: 如何在打字稿中声明ES6 Map类型?

  • 问题内容: 我将TypeScript与/一起使用。 对于使用模块,《 TypeScript手册》显示以下语法: 而且文件显示: 我还搜索了MSDN博客,但找不到任何东西。 截至2016年初,哪个更正确?两者之间有什么区别(如果有)? 在哪里可以找到有关要使用的最新语法的信息的最佳来源,以便将来我可以找到此信息? 问题答案: 这些大多是等效的,但有一些限制不是。 创建一个标识符,它是一个 模块对象

  • 我正在努力寻找 有什么不同?

  • 我有这段代码,但我需要把它翻译成打字稿,并有问题找到请求模块 }

  • 问题内容: 我希望能够实例化一个Typescript类,在运行时可以获取该类和构造函数的详细信息。我想编写的函数将包含类名和构造函数参数。 问题答案: 您可以尝试: 编辑 此版本可在TypeScript操场上使用,例如:

  • 我正在学习Typescript,并尝试实现一个简单的React/Redux应用程序。当我使用同步操作时,它工作得很好,但问题在于异步操作。我正在学习官方的redux教程。 首先,我宣布会议状态 然后我为这个动作声明接口 我使用联合类型导出它们