将Typescript全局变量声明为"模块"类型

Dav*_*vre 5 typescript typescript1.5

我有React类型定义文件(使用外部模块声明).在我的源文件中,我通常会这样做:

import * as R from "react"
Run Code Online (Sandbox Code Playgroud)

然后可以R.createElement(...以强烈的方式愉快地使用等.

我想要的是不必R在每个文件中导入,而是将其作为全局声明(是的,我愿意用一些变量来规划全局命名空间).我试过了:

import * as React from "react";
declare var R : React;
Run Code Online (Sandbox Code Playgroud)

这不起作用,我明白了"Cannot find name 'React'".有没有其他方法可以将整个模块导出为全局模块?


编辑1 - 我应该更清楚:我对如何在文件中导出全局类型定义感兴趣.d.ts.所以假设我已经R加入window了.现在我需要打字稿来知道它R是类型的React module.

bas*_*rat 5

相反,将其作为全局的

这有两个方面:global type declaration对于打字稿和global variable availability用于 JavaScript 消耗。

全局类型声明

如果文件中没有根级别导入导出,则A或 a 声明仅对全局.d.ts名称声明空间有贡献。因此,有一个文件,该文件将是https://github.com/borisyankov/DefinitelyTyped/blob/master/react/react.d.ts形式的编辑版本(而不是)。globalreact.d.tsdeclare module Rdeclare module "react"

全局变量导出

window如果是浏览器,则需要将其打开。因此,在文件中执行以下操作makeReactGlobal.ts

var R = require('react'); 
(<any>window).R = R
Run Code Online (Sandbox Code Playgroud)

然后在您的应用程序中main具有此文件的依赖项,以确保它在任何其他代码之前执行。