我在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?
答案 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>
指令)和外部(AMD
或commonjs
)模块。因此,您无法将///<reference>
代码用于require
函数。
您是否使用AMD标志编译该文件?