在TypeScript生成的Require define中包含非TypeScript JS文件

时间:2014-07-31 08:38:39

标签: requirejs typescript

我们说我有以下TypeScript文件:

import module1 = require( 'module1' );
import module2 = require( 'module2' );

...some code...

这将在编译时生成以下JavaScript:

define( [ 'require', 'exports', 'module1', 'module2' ], function ( require, exports, module1, module2 ) {
...
}

但是,如果我想要包含一个不是TypeScript模块的文件怎么办?我希望它由RequireJS加载,因为它具有也由RequireJS加载的依赖项。如果我尝试添加例如这样:

import someJsFile = require ( 'someJsFile' );

我只是得到一个"模块不能别名为非模块类型"编译错误。如果我跳过import部分而只是require( 'someJsFile' ),它会编译,但它生成的JavaScript是一个非功能性的嵌套定义:

define( [ 'require', 'exports', 'module1', 'module2' ], function ( require, exports, module1, module2 ) {
    define( [ 'someJsFile' ], function ( someJsFile ) {
    ...
    }
}

有没有办法在外部包含JavaScript文件,"更正" RequireJS定义而不必自己将JS文件转换为TS模块?或者我是否必须手动创建RequireJS定义并完全删除import x = require( 'x' )语句?

1 个答案:

答案 0 :(得分:2)

使用amd-dependency。在你的情况下:

/// <amd-dependency path="someJsFile" />
declare var someVarFromJsFile: any;