Экспорт как "module.exports" в TS - PullRequest
       6

Экспорт как "module.exports" в TS

0 голосов
/ 28 апреля 2018

Я пишу Йоменский генератор, и когда я делаю это в JS, вот так:

"use strict";
var Generator = require("yeoman-generator");
var chalk = rquire("chalk");
module.exports = class extends Generator {
  initializing() {
    this.log(
      chalk.bold(
        "Welcome to the " + chalk.green("TypeScript for Serverless") + " generator!"
      )
    );
};

все хорошо. Но я подумал, что смогу сделать это в TypeScript так:

import Base = require("yeoman-generator");
import chalk from "chalk";
type IFileConfiguration = IComplexFileConfiguration | string;

export class Generator extends Base {
  public options: IDictionary;
  public initializing() {
    this.log(
      chalk.bold(
        "Welcome to the " + chalk.green("TypeScript for Serverless") + " generator!"
      )
    );
 }

Мой tsconfig.json:

{
  "compilerOptions": {
    "declaration": true,
    "module": "commonjs",
    "lib": ["es2015", "es2016", "es2017", "esnext.asynciterable"],
    "target": "es2015",
    "moduleResolution": "node",
    "sourceMap": false,
    "noImplicitAny": true,
    "outDir": "./generators/app",
    "removeComments": true,
    "experimentalDecorators": false,
    "emitDecoratorMetadata": false
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*-spec.ts"]
}

Но это создает другое определение модуля и такое, которое полностью нарушает ожидания интерфейса Yeoman. Могу ли я перевести переносимый JS в тот же формат экспорта, который указан выше?

1 Ответ

0 голосов
/ 28 апреля 2018

Хорошо, я понял это. Определив класс без оператора экспорта:

class Generator extends Base {}

Я могу экспортировать в конце файла TS, например, так:

export = Generator

Проблема решена.

...