我正在使用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" />
答案 0 :(得分:0)
使用"triple-slash reference" /// <reference path="...">
代替import
语句来提取您的图书馆定义。
这使得TypeScript可以了解这些类型,因此它将进行编译,但不会尝试生成任何模块。
然后由您确保在运行时环境中可以使用这些库实现。