TypeScript:使用其他环境外部模块中的类型声明一个全局变量,而不导入

时间:2015-04-10 07:33:34

标签: typescript typescript1.4

我在global.d.ts文件中有这个代码,以创建某些函数的全局快捷方式:

///<reference path="../../typings/react/react.d.ts"/>
declare var a: React.HTMLFactory;

但是编译器失败并且名称为“React&#39;未找到。如果我添加:

import React = require('react');

它找到了类型,但随后声明被模块化,这不是我想要的。

是否可以使用TypeScript 1.4声明这样的全局?或者可能是1.5?

2 个答案:

答案 0 :(得分:3)

React作为命名空间(内部模块)

文件react-global.d.ts包含内部模块React的定义:

// -------- global.d.ts --------
///<reference path="react-global.d.ts"/>
declare var a: React.HTMLFactory;

React作为外部模块

文件react.d.ts包含外部模块"react"的定义。

首先,我建议使用TypeScript 1.5-alpha,因为在ES6上对齐TS时会修改模块的语法。 ES6的外部模块是未来。

使用外部模块:

// -------- global.d.ts --------
///<reference path="react.d.ts"/>
import * as React from 'react'; // syntax ES6 / TS 1.5
declare var a: React.HTMLFactory;
// export something here

NB。此处///<reference是可选的,因为文件.d.ts的名称与外部模块的名称相同。

答案 1 :(得分:0)

我认为问题是:ts编译器无法组成内部(包括 - ///<reference>指令)和外部(AMDcommonjs)模块。因此,您无法将///<reference>代码用于require函数。

您是否使用AMD标志编译该文件?