有人知道如何做模块.pports?

我尝试了一些不同的方式以

结尾
export class Greeter {}
.

将编译为

exports.Greeter = Greeter;
.

但我真正想要的是:

exports = Greeter;
.

让我可以使用它:

import { Greeter } from "greeter";

const greeter = new Greeter();
.

而不是

import { Greeter } from "greeter";

const greeter = new Greeter.Greeter();
.

是可以用缩写术语呢?

有帮助吗?

解决方案 2

现在已经实现并在输入0.9 :)中准备好了

其他提示

您可以在类型中导出如下类型的单个类:

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;
.

而且这里是如何使用的:

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

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

console.log(name); // Homer Simpson
.

要完成,这里是我的 tsconfig.json (我使用的是v2.0.3):

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

所以我想我已经找到了一个解决方法。只需将关键字“模块”包装在您的.ts文件中的括号中:

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

生成的javascript文件将完全相同:

(module).exports = MyClass;
.

注意,比声明var模块自己好自己,下载 node.d.ts定义文件和棍子它在与您的打字文件相同的目录中。以下是一个完整的Express Node.js路由文件的样本,它假定node.d.ts在同一目录中:

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

然后我可以新上表格控制器和(使用Express)分配视图方法:

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

我假设任何关键字都可以使用此模式逃脱:

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

这是丑陋的,但你仍然可以做:

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

哪个编译为:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top