Question

Quelqu'un sait-il faire un module.exports?

J'ai essayé de différentes manières de finir avec

export class Greeter {}

qui compilera

exports.Greeter = Greeter;

Mais ce que je veux vraiment, c'est ceci:

exports = Greeter;

Pour que je puisse l'utiliser comme ceci:

import { Greeter } from "greeter";

const greeter = new Greeter();

et pas

import { Greeter } from "greeter";

const greeter = new Greeter.Greeter();

est-ce possible avec dossier?

Était-ce utile?

La solution 2

Ceci a maintenant été mis en œuvre et est prêt à TypeScript 0.9 :)

Autres conseils

Vous pouvez exporter une seule classe dans Typescript comme ceci:

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;

Et voici comment ça va être utilisé:

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

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

console.log(name); // Homer Simpson

Pour être complet, voici mon tsconfig.json (J'utilise documentscript v2.0.3):

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

Donc, je pense avoir trouvé une solution de contournement.Il suffit d'envelopper le mot clé 'module' entre parenthèses de votre fichier .TS:

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

Le fichier JavaScript généré sera exactement le même:

(module).exports = MyClass;

Remarque, mieux que de déclarer votre module Var vous-même, téléchargez le fichier de définition nœud.d.ts et bâtonDans le même répertoire que votre fichier dossier.Voici un échantillon complet d'un fichier de routage NODE.JS Express qui suppose node.d.ts est dans le même répertoire:

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

Je peux alors neuf sur une feuille de feuille et (en utilisant Express) attribuer la méthode de vue:

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

Je suppose que tout mot-clé puisse être échappé à l'aide de ce modèle:

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

C'est moche et hacky, mais vous pouvez toujours faire:

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

qui compile:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top