我正在使用Typescript与AMD和require.js,但是我无法让Typescript编译器输出在加载模块后执行的代码。
这是main.ts
:
import { foo } from './bar';
foo('world');
这是bar.ts
文件:
export function foo(name: string) {
alert('Hello ' + name);
}
我使用以下tsconfig.json
文件进行编译:
{
"compilerOptions": {
"alwaysStrict": true,
"module": "amd",
"outFile": "client.js",
"target": "es5"
},
"files": [
"main.ts"
]
}
然后像这样在我的HTML中包含它:
<script data-main="client/client.js" src="/static/require.js"></script>
然而,生成的 JavaScript 代码看起来是这样的:
define("bar", ["require", "exports"], function (require, exports) {
"use strict";
function foo(name) {
alert('Hello ' + name);
}
exports.foo = foo;
});
define("main", ["require", "exports", "bar"], function (require, exports, bar) {
"use strict";
bar.foo('world');
});
除了我想直接在main
模块中执行代码以外,一切都好。因此,最后的定义应该是:
define(["require", "exports", "bar"], ...
取代
define("main", ["require", "exports", "bar"], ...
目前,我需要编写第三个 JavaScript 脚本来加载 main
模块,但我认为将 main
模块作为可重用的代码是不好的风格。
如何让 TypeScript 编译器将 main.ts
输出为可执行定义而不是模块定义?
/// <reference path="[YOUR IMPORT FILE]" />
,而是直接使用import
。 - Aluan Haddad