typescript中的module.exports

typescript中的module.exports,typescript,import,commonjs,Typescript,Import,Commonjs,有人知道如何进行模块导出吗 我尝试了一些不同的方法,最终以 导出类迎宾器{} 将编译为 exports.Greeter=Greeter; 但我真正想要的是: exports = Greeter; 所以我可以这样使用它: class Person { private firstName: string; private lastName: string; constructor(firstName: string, lastName: string) { this.f

有人知道如何进行模块导出吗

我尝试了一些不同的方法,最终以

导出类迎宾器{}
将编译为

exports.Greeter=Greeter;
但我真正想要的是:

exports = Greeter;
所以我可以这样使用它:

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;
从“Greeter”导入{Greeter};
常数迎宾员=新迎宾员();
而不是

从“Greeter”导入{Greeter};
const greeter=新的greeter.greeter();

Typescript可以这样做吗?

它既难看又粗糙,但您仍然可以这样做:

类问候者{}
申报var出口:任何;
出口=迎宾;
其中包括:

var-Greeter=(函数(){
函数Greeter(){}
回程迎宾员;
})();
出口=迎宾;

所以我想我找到了一个解决办法。只需在.ts文件中将关键字“module”用括号括起来:

declare var module: any;
(module).exports = MyClass;
生成的javascript文件将完全相同:

(module).exports = MyClass;
注意,与自己声明var模块相比,下载并将其粘贴到与typescript文件相同的目录中更好。以下是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;
我想任何关键字都可以使用此模式进行转义:

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

这一点现在已经实现,并在TypeScript 0.9:)中准备就绪。

您可以在TypeScript中导出一个类,如下所示:

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(我使用的是TypeScript v2.0.3):


不幸的是,TypeScript编译器似乎不能很好地处理这个问题。例如,当您执行此操作时,无法从类派生。这将如何工作?这不是CommonJs与AMD之间的全部争论吗。这一常见做法不支持直接将内容返回为exports变量?为了澄清(因为我不得不深入研究),这里提供了0.9中的语法:(在“Export=”下)。为了进一步澄清,对于未来的读者,它几乎完全按照询问者的要求实现了。但我真正想要的是
export=Greeter,这正是您要做的:)我只想从
config/db.ts
中公开一个配置对象,并在应用程序中使用该配置。这就是我在TypeScript 1.4中可以成功完成的:在
config/db.ts
write
var config={connStr:'postgres://user:pass@host/dbname'};导出=配置app.ts
中,将其称为
import dbConfig=require('./config/db');dbConnect(dbConfig.connStr)非常感谢!我想知道为什么typescript没有实现ExportPerson。。。布拉布拉布拉布拉布拉?我认为这是合乎逻辑的,不是吗?或者我遗漏了什么?是否还可以从文件中导出一些打字?为了编写测试,您可能需要从文件中获取键入,但最后仍然需要一个
模块.exports
{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist/commonjs",
    "rootDir": "src/ts",
    "target": "es5"
  },
  "exclude": [
    "dist",
    "node_modules"
  ]
}