typescript의 module.exports
누군가 module.exports를 수행하는 방법을 알고 있습니까?
나는 몇 가지 다른 방법을 시도했습니다.
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();
Typescript로 가능합니까?
다음과 같이 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을 사용하고 있습니다).
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist/commonjs",
"rootDir": "src/ts",
"target": "es5"
},
"exclude": [
"dist",
"node_modules"
]
}
이것은 이제 구현되었으며 TypeScript 0.9에서 준비되었습니다. :)
그래서 해결 방법을 찾은 것 같습니다. .ts 파일에서 '모듈'키워드를 괄호로 묶기 만하면됩니다.
declare var module: any;
(module).exports = MyClass;
생성 된 자바 스크립트 파일은 정확히 동일합니다.
(module).exports = MyClass;
Note, better than declaring var module yourself, download the node.d.ts definition file and stick it in the same directory as your typescript file. Here is a complete sample of an express node.js routing file which assumes node.d.ts is in same directory:
/// <reference path="node.d.ts" />
var SheetController = function () {
this.view = function (req, res) {
res.render('view-sheet');
};
};
(module).exports = SheetController;
I can then new up a SheetController and (using express) assign the view method:
var sheetController = new SheetController();
app.get('/sheet/view', sheetController.view);
I suppose any keyword can be escaped using this pattern:
declare var reservedkeyword: any;
(reservedkeyword).anything = something;
It's ugly and hacky, but you can still do:
class Greeter {}
declare var exports:any;
exports = Greeter;
Which compiles into:
var Greeter = (function () {
function Greeter() { }
return Greeter;
})();
exports = Greeter;
참고URL : https://stackoverflow.com/questions/12696236/module-exports-in-typescript
'Nice programing' 카테고리의 다른 글
emacs가 수정 된 파일에 대한 임시 심볼릭 링크를 만드는 이유는 무엇입니까? (0) | 2020.11.08 |
---|---|
cron없이 AWS에서 예약 된 작업 실행 (0) | 2020.11.08 |
앱 소스는 언제 테스트 대상에 포함되어야합니까? (0) | 2020.11.08 |
role = form은 접근성에 어떤 도움이됩니까? (0) | 2020.11.08 |
Chrome DevTools에서 소스 맵 비활성화 (0) | 2020.11.08 |