Я использую TypScript с AMD и require.js, но я не могу заставить компилятор типа types выводить код, который будет выполнен после загрузки модулей.Typcript с AMD и require.js
Это 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
модуль как многоразовый код.
Как я могу заставить машинописный компилятор выводить main.ts
в качестве исполняемого определения вместо определения модуля?
Не используйте '/// ' с модулями. Просто «импортируйте» их. –