Pregunta

¿Alguien sabe cómo hacer un módulo.Exportes?

Probé algunas formas diferentes que terminan con

export class Greeter {}

que se compilará a

exports.Greeter = Greeter;

Pero lo que realmente quiero es esto:

exports = Greeter;

para que pueda usarlo así:

import { Greeter } from "greeter";

const greeter = new Greeter();

y no

import { Greeter } from "greeter";

const greeter = new Greeter.Greeter();

¿Esto es posible con TyPScript?

¿Fue útil?

Solución 2

Esto se ha implementado ahora y está listo en TIPSCRIPTROSS 0.9 :)

Otros consejos

Puede exportar una sola clase en TypeScript como esta:

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;

y aquí es cómo se va a utilizar:

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

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

console.log(name); // Homer Simpson

Para estar completo, aquí está mi tsconfig.json (estoy usando TypScript v2.0.3):

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

Así que creo que he encontrado una solución.Solo envuelva la palabra clave 'módulo' entre paréntesis en su archivo .ts:

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

El archivo JavaScript generado será exactamente el mismo:

(module).exports = MyClass;

Nota, mejor que declarar VAR Módulo usted mismo, descargue el node.d.ts File y Sticken el mismo directorio que su archivo typycript.Aquí hay una muestra completa de un archivo de enrutamiento EXPRESS NODE.JS que asume NOde.d.ts está en el mismo directorio:

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

Entonces puedo volver a subir una hoja y (usar Express) Asignar el método de vista:

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

Supongo que se puede escapar alguna palabra clave usando este patrón:

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

es feo y hacky, pero todavía puedes hacer:

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

que se compila en:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top