Search code examples
typescriptimportcommonjs

module.exports in typescript


does somebody know how to do a module.exports?

I tried some different ways ending up with

export class Greeter {}

which will compile to

exports.Greeter = Greeter;

But what I really want is this:

exports = Greeter;

So that I can use it like this:

import { Greeter } from "greeter";

const greeter = new Greeter();

and not

import { Greeter } from "greeter";

const greeter = new Greeter.Greeter();

Is this possible with Typescript?


Solution

  • You can export a single class in TypeScript like this:

    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;
    

    And here is how it's going to be used:

    var Person = require('./dist/commonjs/Person.js');
    
    var homer = new Person('Homer', 'Simpson');
    var name = homer.getFullName();
    
    console.log(name); // Homer Simpson
    

    To be complete, here is my tsconfig.json (I am using TypeScript v2.0.3):

    {
      "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "outDir": "dist/commonjs",
        "rootDir": "src/ts",
        "target": "es5"
      },
      "exclude": [
        "dist",
        "node_modules"
      ]
    }