如何在无模块环境中使用没有强名称的TypeScript定义文件

时间:2016-03-31 09:53:09

标签: typescript ecmascript-5

我正在使用Visual Studio 2013 / TypeScript 1.8.5 / NPM / Typings。

我想用一些React JSX将TypeScript编译为ES5代码,更重要的是,没有模块。

一些定义文件类型提取我只有一个名为module的字符串。通过“字符串命名”,我的意思是这样的:

declare module "redux-devtools" {}

当别人有这个时:

declare namespace Redux {}
declare module "redux" {}

当我称之为“强名称”时,我可以直接在我的代码中使用这些定义。

var foobar = Redux;

但是当只有一个名为module的字符串时,我不知道如何使用它们。根据我的理解,我必须使用import语句,但是当我这样做时,我会得到一个“无法编译模块,除非提供'--module'标志”,再次,我不想在我的目标代码中使用模块。 / p>

import { createDevTools } from 'redux-devtools';
const DevTools = createDevTools(/**/);

有没有特别的方法来做到这一点?或者它是定义文件,如redux-devtools,它们首先是错误的?

编辑:

如果我将TypeScript编译为ES6,当我导入外部模块时,我不再收到“无法编译模块...”消息。 TypeScript生成这样的语句:

const redux_devtools_1 = require('redux-devtools');

我发现它令人惊讶,因为'require()'不是ES6的一部分,这意味着我必须使用es6-shim + RequireJS才能使用此解决方案?

另外,我有一个通用的'_references.ts'文件,如下所示:

 /// <reference path="../typings/browser.d.ts" />

1 个答案:

答案 0 :(得分:0)

使用"triple-slash reference" /// <reference path="...">代替import语句来提取您的图书馆定义。

这使得TypeScript可以了解这些类型,因此它将进行编译,但不会尝试生成任何模块。

然后由您确保在运行时环境中可以使用这些库实现。