質問

誰かがModule.Exportsをする方法を知っていますか?

私は

で終わった異なる方法を試しました
export class Greeter {}
.

にコンパイルする

exports.Greeter = Greeter;
.

しかし私が本当に欲しいものはこれです:

exports = Greeter;
.

このようにそれを使うことができるように:

import { Greeter } from "greeter";

const greeter = new Greeter();
.

ではなく

import { Greeter } from "greeter";

const greeter = new Greeter.Greeter();
.

はタイプスクリプトで可能ですか?

役に立ちましたか?

解決 2

これは現在実装されており、TQUESSCRIPT 0.9 :)

の準備ができています。

他のヒント

このようなTypesScriptで単一のクラスをエクスポートできます。

class Person {

  private firstName: string;
  private lastName: string;

  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  public getFullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

export = Person;
.

そしてここにそれがどのように使われるべきかです:

var Person = require('./dist/commonjs/Person.js');

var homer = new Person('Homer', 'Simpson');
var name = homer.getFullName();

console.log(name); // Homer Simpson
.

完成させるには、ここに私の tsconfig.json があります(私はTypeScript v2.0.3を使用しています):

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist/commonjs",
    "rootDir": "src/ts",
    "target": "es5"
  },
  "exclude": [
    "dist",
    "node_modules"
  ]
}
.

だから私は回避策を見つけたと思います。キーワード 'MODULE'を.tsファイルの括弧内に包みます。

declare var module: any;
(module).exports = MyClass;
.

生成されたJavaScriptファイルはまったく同じです。

(module).exports = MyClass;
.

注意、varモジュールを自分で宣言するよりも優れて、 node.d.tsの定義ファイルとスティックTypesScriptファイルと同じディレクトリにあります。node.d.tsを仮定するExpress Node.jsルーティングファイルの完全なサンプルは同じディレクトリにあります。

/// <reference path="node.d.ts" />
var SheetController = function () {
    this.view = function (req, res) {
        res.render('view-sheet');
    };
};
(module).exports = SheetController;
.

私はシートコントローラを新たに上げ、(Expressを使用)ビュー方法を割り当てることができます:

var sheetController = new SheetController();
app.get('/sheet/view', sheetController.view);
.

このパターンを使用してキーワードをエスケープできるとします。

declare var reservedkeyword: any;
(reservedkeyword).anything = something;
.

それは醜くてハッキーですが、あなたはまだやることができます:

class Greeter {}
declare var exports:any;
exports = Greeter;
.

にコンパイルする

var Greeter = (function () {
    function Greeter() { }
    return Greeter;
})();
exports = Greeter;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top