weiß jemand, wie man ein module.exports macht?
Ich habe verschiedene Wege ausprobiert
export class Greeter {}
was kompilieren wird
exports.Greeter = Greeter;
Aber was ich wirklich will, ist Folgendes:
exports = Greeter;
Damit ich es so benutzen kann:
import { Greeter } from "greeter";
const greeter = new Greeter();
und nicht
import { Greeter } from "greeter";
const greeter = new Greeter.Greeter();
Ist das mit Typescript möglich?
typescript
import
commonjs
Kersten
quelle
quelle
module.exports
am Ende immer noch eine .Dies wurde nun implementiert und ist in TypeScript 0.9 fertig :)
quelle
export = Greeter;
, genau das machst du :)config/db.ts
Konfigurationsobjekt aus verfügbar machen und diese Konfiguration in der App verwenden. Dies ist, was ich erfolgreich in TypeScript 1.4 tun konnte: Inconfig/db.ts
Schreibenvar config = {connStr:'postgres://user:pass@host/dbname'}; export = config;
undapp.ts
Verweisen alsimport dbConfig = require('./config/db'); dbConnect(dbConfig.connStr);
Ich glaube, ich habe eine Problemumgehung gefunden. Schließen Sie einfach das Schlüsselwort 'module' in Ihre .ts-Datei in Klammern ein:
declare var module: any; (module).exports = MyClass;
Die generierte Javascript-Datei ist genau dieselbe:
(module).exports = MyClass;
Beachten Sie, dass Sie die Definitionsdatei node.d.ts besser herunterladen als das var-Modul selbst deklarieren und im selben Verzeichnis wie Ihre Typoskriptdatei ablegen müssen . Hier ist ein vollständiges Beispiel einer Express-Routingdatei von node.js, die davon ausgeht, dass sich node.d.ts im selben Verzeichnis befindet:
/// <reference path="node.d.ts" /> var SheetController = function () { this.view = function (req, res) { res.render('view-sheet'); }; }; (module).exports = SheetController;
Ich kann dann einen SheetController neu einrichten und (mit Express) die Ansichtsmethode zuweisen:
var sheetController = new SheetController(); app.get('/sheet/view', sheetController.view);
Ich nehme an, dass jedes Schlüsselwort mit diesem Muster maskiert werden kann:
declare var reservedkeyword: any; (reservedkeyword).anything = something;
quelle
Es ist hässlich und hackig, aber Sie können immer noch tun:
class Greeter {} declare var exports:any; exports = Greeter;
Welche kompiliert in:
var Greeter = (function () { function Greeter() { } return Greeter; })(); exports = Greeter;
quelle