Простите мое невежество по этому поводу, я застрял и надеюсь получить какое-то руководство.
Возьмите этот Greeter
пример класса, найденный на странице детской площадки TypeScript :
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
Мне было поручено создать и управлять одним компонентом, который можно использовать как в простой среде HTML + JavaScript, так и в приложении Angular. Я управляю / пишу этот код на TypeScript и использую TypeScript для компиляции вывода как JavaScript.
Возвращаясь к приведенному выше примеру, если бы я хотел сделать этот класс доступным (как импорт) в Angular, мне нужно было бы экспортировать этот класс?
export class Greeter {
...
}
Когда я это делаю, страница выдает ошибки:
Uncaught ReferenceError: define is not defined
Скомпилированный JavaScript выглядит так:
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Greeter = /** @class */ (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
}());
exports.Greeter = Greeter;
var greeter = new Greeter("world");
});
Поскольку класс Greeter теперь связан с этим блоком определения, я, очевидно, не могу создать экземпляр нового класса как такового:
let greeter = new Greeter("world"); // < -- Won't work.
Выдает ошибку:
Uncaught ReferenceError: Greeter is not defined
- Как мне экспортировать этот класс таким образом, чтобы не нарушить доступ к объекту, скажем, в стиле ванильного JavaScript?
- Возможно ли то, что я пытаюсь сделать?
- Это разумная цель, или я здесь совершенно не на том пути?