Ker*_*ten 72 import commonjs typescript
有人知道怎么做module.exports?
我尝试了一些不同的方式
export class Greeter {}
Run Code Online (Sandbox Code Playgroud)
将编译为
exports.Greeter = Greeter;
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是:
exports = Greeter;
Run Code Online (Sandbox Code Playgroud)
所以我可以像这样使用它:
import { Greeter } from "greeter";
const greeter = new Greeter();
Run Code Online (Sandbox Code Playgroud)
并不是
import { Greeter } from "greeter";
const greeter = new Greeter.Greeter();
Run Code Online (Sandbox Code Playgroud)
这可能与Typescript有关吗?
Ben*_*uer 65
您可以在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;
Run Code Online (Sandbox Code Playgroud)
以下是它将如何使用:
var Person = require('./dist/commonjs/Person.js');
var homer = new Person('Homer', 'Simpson');
var name = homer.getFullName();
console.log(name); // Homer Simpson
Run Code Online (Sandbox Code Playgroud)
要完成,这是我的tsconfig.json(我使用的是TypeScript v2.0.3):
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist/commonjs",
"rootDir": "src/ts",
"target": "es5"
},
"exclude": [
"dist",
"node_modules"
]
}
Run Code Online (Sandbox Code Playgroud)
Ker*_*ten 20
这已经实现,并在TypeScript 0.9中准备好了:)
所以我想我找到了一个解决方法.只需将关键字"module"包装在.ts文件的括号中:
declare var module: any;
(module).exports = MyClass;
Run Code Online (Sandbox Code Playgroud)
生成的javascript文件将完全相同:
(module).exports = MyClass;
Run Code Online (Sandbox Code Playgroud)
注意,比自己声明var模块更好,下载node.d.ts定义文件并将其粘贴在与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;
Run Code Online (Sandbox Code Playgroud)
然后我可以新建一个SheetController并(使用express)分配视图方法:
var sheetController = new SheetController();
app.get('/sheet/view', sheetController.view);
Run Code Online (Sandbox Code Playgroud)
我想任何关键字都可以使用这种模式进行转义:
declare var reservedkeyword: any;
(reservedkeyword).anything = something;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60300 次 |
| 最近记录: |