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?
In TypeScript, a module is a file containing values, functions, or classes. You can make some of them public, i.e. visible from other modules, by exporting them. Non exported objects are private. Let's create a very simple math module with a single exported function!
TypeScript has export = syntax. It specifies a single object that is exported from the module. This can be a function, class, interface, namespace, or enum.
Use named exports to export a function in TypeScript, e.g. export function sum() {} . The exported function can be imported by using a named import as import {sum} from './another-file' . You can use as many named exports as necessary in a single file.
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" ] }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With