module.exports dactilografiat

voturi
48

Are cineva știe cum să facă o module.exports?

Am încercat câteva moduri diferite, terminand cu

export class Greeter {}

care va compila la

exports.Greeter = Greeter;

Dar ceea ce doresc cu adevărat este aceasta:

exports = Greeter;

Așa că eu pot folosi ca aceasta:

import Greeter = module(Greeter);
var greeter = new Greeter();

si nu

import Greeter = module(Greeter);
var greeter = new Greeter.Greeter();

Este posibil acest lucru cu masina de scris?

Întrebat 02/10/2012 la 19:40
sursa de către utilizator
În alte limbi...                            


6 răspunsuri

voturi
25

Puteți exporta o singură clasă de dactilografiat ca aceasta:

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;

Și aici este modul în care va fi utilizat:

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

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

console.log(name); // Homer Simpson

Pentru a fi complet, aici este meu tsconfig.json (I sînt folosire typescript v2.0.3):

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist/commonjs",
    "rootDir": "src/ts",
    "target": "es5"
  },
  "exclude": [
    "dist",
    "node_modules"
  ]
}
Publicat 01/11/2016 la 09:48
sursa de către utilizator

voturi
19

Acest lucru a fost acum pus în aplicare și este gata dactilografiat 0.9 :)

Publicat 28/06/2013 la 12:42
sursa de către utilizator

voturi
11

În prezent, nr. Aceasta este o limitare dactilografiat și o limitare în curent caietul de sarcini modul de paie-om fiind considerat de ECMA care typescript are ca model.

Aceasta ar fi o sugestie foarte bună de a face pe CodePlex.

Publicat 02/10/2012 la 21:20
sursa de către utilizator

voturi
7

Deci, cred că am găsit o soluție. Doar înfășurați „modul“, cuvântul cheie în paranteze în fișierul TS:

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

Fișierul JavaScript generat va fi exact la fel:

(module).exports = MyClass;

Notă, mai bine decât modul de declarare a var le descărca fișierul node.d.ts definiție și stick - l în același director ca și fișierul dactilografiate. Iată o mostră completă a unui fișier de rutare expres node.js care presupune node.d.ts este în același director:

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

atunci eu pot nouă un SheetController și (folosind Express) atribuie metoda de vedere:

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

Presupun că orice cuvânt cheie poate fi scăpat cu ajutorul acestui model:

declare var reservedkeyword: any;
(reservedkeyword).anything = something;
Publicat 31/12/2012 la 07:09
sursa de către utilizator

voturi
2

Este urât și Hacky, dar puteți face în continuare:

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

Ceea ce compilează în:

var Greeter = (function () {
    function Greeter() { }
    return Greeter;
})();
exports = Greeter;
Publicat 05/10/2012 la 19:42
sursa de către utilizator

voturi
-1

încercați acest șablon aplicație șabloane https://github.com/ntheile/TypeScript-Backbone-Require-Boilerplate

Publicat 09/10/2012 la 03:58
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more