I持って活字体で次の例のクラス:エクスポート活字体クラス(browserifyまたはWebPACKの)
{
"compilerOptions": {
"module": "umd",
"target": "es5",
"noImplicitAny": true,
"removeComments": false,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true
},
"files" :[
"example.ts"
]
}
次tsconfig.jsonを使用
export default class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
transpilerを使用して、次のJavaScriptを生成します。
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Greeter = (function() {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function() {
return "Hello, " + this.greeting;
};
return Greeter;
}());
exports.Greeter = Greeter;
});
私はたくさんのをテストしています異なるモジュール(umd、commonjs)を持つものではありませんが、同じコードで同時にNode.jsとBrowserでクラスが動作するようにすることはできません(requireはAngular、React、Windowオブジェクトで動作しますブラウザの)。私のような何かを達成しようとしています:
// With Node.js, Angular, React etc
let Greeter = require("Greeter");
let instanceGreeter = new Greeter("My Name");
instanceGreeter.greet();
// And that works in the browser too with the same codebase
var instanceGreeter = new Greeter("My Browser Name");
instanceGreeter.greet();
を、これは任意の標準に従うことによって可能ですか(モジュールオプションを使用していない)私は自分のコードでそれをエクスポートする必要がありますか?