czy ktoś wie, jak zrobić module.exports?
Wypróbowałem kilka różnych sposobów na zakończenie
export class Greeter {}
który zostanie skompilowany do
exports.Greeter = Greeter;
Ale to, czego naprawdę chcę, to:
exports = Greeter;
Aby móc go używać w ten sposób:
import { Greeter } from "greeter";
const greeter = new Greeter();
i nie
import { Greeter } from "greeter";
const greeter = new Greeter.Greeter();
Czy jest to możliwe w przypadku maszynopisu?
typescript
import
commonjs
Kersten
źródło
źródło
module.exports
na końcu.Zostało to już zaimplementowane i jest gotowe w TypeScript 0.9 :)
źródło
export = Greeter;
, to dokładnie to, co robisz :)config/db.ts
i użyć tej konfiguracji w aplikacji. Oto, co udało mi się z powodzeniem zrobić w języku TypeScript 1.4: naconfig/db.ts
piśmievar config = {connStr:'postgres://user:pass@host/dbname'}; export = config;
iapp.ts
nazywanie go jakoimport dbConfig = require('./config/db'); dbConnect(dbConfig.connStr);
Więc myślę, że znalazłem obejście. Po prostu zawiń słowo kluczowe „module” w nawiasach w pliku .ts:
declare var module: any; (module).exports = MyClass;
Wygenerowany plik javascript będzie dokładnie taki sam:
(module).exports = MyClass;
Uwaga, lepiej niż samodzielnie deklarować moduł var, pobierz plik definicji node.d.ts i umieść go w tym samym katalogu, w którym znajduje się plik maszynopisu. Oto pełny przykład pliku routingu express node.js, który zakłada, że node.d.ts znajduje się w tym samym katalogu:
/// <reference path="node.d.ts" /> var SheetController = function () { this.view = function (req, res) { res.render('view-sheet'); }; }; (module).exports = SheetController;
Mogę następnie utworzyć kontroler SheetController i (używając ekspresu) przypisać metodę widoku:
var sheetController = new SheetController(); app.get('/sheet/view', sheetController.view);
Przypuszczam, że każde słowo kluczowe można zmienić za pomocą tego wzorca:
declare var reservedkeyword: any; (reservedkeyword).anything = something;
źródło
Jest brzydki i zepsuty, ale nadal możesz:
class Greeter {} declare var exports:any; exports = Greeter;
Które kompiluje się w:
var Greeter = (function () { function Greeter() { } return Greeter; })(); exports = Greeter;
źródło