daktilo module.exports

oy
48

Biri bir module.exports nasıl biliyor?

Ben ile biten bazı farklı yollar denedi

export class Greeter {}

hangi derlemek olacak

exports.Greeter = Greeter;

Ama ne gerçekten istiyorum şudur:

exports = Greeter;

Bunun gibi kullanabilirsiniz Böylece:

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

ve yok

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

Bu tutanak ile mümkün mü?

Oluştur 02/10/2012 saat 19:40
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
25

Böyle daktilo tek sınıf verebilirsiniz:

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;

Ve işte kullanılacak gidiyor nasıl:

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

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

console.log(name); // Homer Simpson

Tam olması için, burada olduğu tsconfig.json (ı typescript v2.0.3 kullanıyorum):

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist/commonjs",
    "rootDir": "src/ts",
    "target": "es5"
  },
  "exclude": [
    "dist",
    "node_modules"
  ]
}
Cevap 01/11/2016 saat 09:48
kaynak kullanıcı

oy
19

Bu artık hayata ve typescript 0.9 de hazırdır :)

Cevap 28/06/2013 saat 12:42
kaynak kullanıcı

oy
11

Şu anda hayır. Bu tutanak bir kısıtlama ve typescript tasarımlanmıştır ECMA tarafından düşünülen mevcut saman erkek modülü tarifnamede bir sınırlama yoktur.

Bu Codeplex üzerinde yapmak için harika bir öneri olurdu.

Cevap 02/10/2012 saat 21:20
kaynak kullanıcı

oy
7

Bu yüzden geçici bir çözüm buldum. Sadece ts dosyasında parantez içinde anahtar kelimeyi 'modülü' sarın:

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

oluşturulan javascript dosyası tamamen aynı olacak:

(module).exports = MyClass;

, Var modülünü kendini ilan daha iyi Not indirmek node.d.ts tanım dosyası ve typescript dosyasıyla aynı dizine yapıştırın. Node.d.ts varsayar İşte bir ekspres tam bir örnek node.js olan yönlendirme dosyası aynı dizinde:

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

Sonra bir SheetController kadar yeni ve görünümü yöntemi atamanız (ekspres kullanarak) yapabilirsiniz:

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

Ben herhangi bir anahtar kelime, bu desen kullanarak kaçtığı edilebilir varsayalım:

declare var reservedkeyword: any;
(reservedkeyword).anything = something;
Cevap 31/12/2012 saat 07:09
kaynak kullanıcı

oy
2

Çirkin ve hacky, ama yine de yapabilirsiniz:

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

Hangi içine derler:

var Greeter = (function () {
    function Greeter() { }
    return Greeter;
})();
exports = Greeter;
Cevap 05/10/2012 saat 19:42
kaynak kullanıcı

oy
-1

Bu klişe uygulaması şablonu denemek https://github.com/ntheile/TypeScript-Backbone-Require-Boilerplate

Cevap 09/10/2012 saat 03:58
kaynak kullanıcı

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