문제

누군가가 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와 함께 사용할 수 있습니까?

도움이 되었습니까?

해결책 2

이제 이제 구현되었으며 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을 사용하고 있습니다) :

{
  "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 모듈을 직접 선언하는 것보다 낫고 "NoreferRer"> node.d.ts 정의 파일 및 스틱을 다운로드하십시오.Typescript 파일과 동일한 디렉토리에 있습니다.다음은 node.d.ts가 동일한 디렉토리에 가정하는 Express Node.js 라우팅 파일의 전체 샘플입니다.

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

i 그런 다음 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