Я пытаюсь использовать JS в качестве языка сценариев в игровом движке с TypeScript сверху.В качестве времени выполнения я использую Duktape .Я полный нуб в отношении JavaScript, и в настоящее время я пытаюсь обдумать, как включить рабочий процесс, в котором люди могут #include (требовать и т. Д.) Другие файлы.
В целях тестирования я начал с двух простыхФайлы TypeScript:
Foo.ts
declare function Print(text : string) : void;
export module Foo
{
export function GetFoo(): string
{
return "Foo"
}
Print("Foo: " + GetFoo())
}
Bar.ts
import { Foo } from "./Foo"
declare function Print(text: string): void;
Print("Bar: " + Foo.GetFoo())
Теперь я пропускаю обаФункция транспонирования TypeScript (из typescriptServices.js) и получить:
Foo.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Foo;
(function (Foo) {
function GetFoo() {
return "Foo";
}
Foo.GetFoo = GetFoo;
Print("Foo: " + GetFoo());
})(Foo = exports.Foo || (exports.Foo = {}));
Bar.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Foo_1 = require("./Foo");
Print("Bar: " + Foo_1.Foo.GetFoo());
Затем я хочу запустить Bar.js через Duktape.Я прочитал this , так что, насколько я понимаю, есть несколько способов заставить работать другие файлы, но этот, кажется, заставляет работать функцию 'require', поэтому для JS-кода это звучит правильно, так как TypeScriptсоздан для меня.Итак, я создаю контекст Duktape, я вызываю для него duk_module_duktape_init и регистрирую функцию 'modSearch' и т. Д. НО, прежде чем он даже доходит до части 'require' в Bar.js, Duktape уже дает сбой с сообщением "ReferenceError: identifier 'exports' undefined ".
Как уже упоминалось ранее, я действительно новичок в JS и TS и могу иметь неверное представление об этом начинании, поэтому не стесняйтесь предлагать совершенно разные подходы.Все, что меня волнует, - это то, что пользователи могут разбивать код на несколько файлов и каким-то образом ссылаться на эти файлы таким образом, чтобы такие инструменты, как VS Code, могли выяснить эти ссылки и предоставить свои функциональные возможности для разработки кода.Мне все равно, в конечном итоге я использую 'require' или 'import' и могу ли я использовать все функции TS или просто какое-то подмножество.
Короче говоря, что я делаю неправильно и как я могу это сделатьсделать эту работу?