I created a foo.ts
like this:
class Foo{
public echo(){
console.log("foo");
}
}
And it outputs javascript code like this:
var Foo = (function () {
function Foo() {
}
Foo.prototype.echo = function () {
console.log("foo");
};
return Foo;
})();
I want to call echo
function in nodejs REPL, but it ends up a error like this:
$ node
> require('./foo.js');
{}
> f = new Foo
ReferenceError: Foo is not defined
at repl:1:10
at REPLServer.self.eval (repl.js:110:21)
at Interface.<anonymous> (repl.js:239:12)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
at ReadStream.EventEmitter.emit (events.js:98:17)
at emitKey (readline.js:1095:12)
How can I instantiate the class and call the function echo
?
I created a foo.ts
like this:
class Foo{
public echo(){
console.log("foo");
}
}
And it outputs javascript code like this:
var Foo = (function () {
function Foo() {
}
Foo.prototype.echo = function () {
console.log("foo");
};
return Foo;
})();
I want to call echo
function in nodejs REPL, but it ends up a error like this:
$ node
> require('./foo.js');
{}
> f = new Foo
ReferenceError: Foo is not defined
at repl:1:10
at REPLServer.self.eval (repl.js:110:21)
at Interface.<anonymous> (repl.js:239:12)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
at ReadStream.EventEmitter.emit (events.js:98:17)
at emitKey (readline.js:1095:12)
How can I instantiate the class and call the function echo
?
- 2 I'm not sure how typescript works, but it's clear that you are not exporting anything from Foo.js (and you are not assign the required module to anything). Maybe make yourself familiar either Node's module system first. – Felix Kling Commented Jun 14, 2014 at 8:09
2 Answers
Reset to default 4Node.js does not have a leaky global like the browser window
object.
To use TypeScript code in node.js you need to use monjs and export the class i.e.
class Foo{
public echo(){
console.log("foo");
}
}
export = Foo;
Then in the REPL:
$ node
> var Foo = require('./foo.js');
{}
> f = new Foo();
To learn more about AMD / CommonJS : https://www.youtube./watch?v=KDrWLMUY0R0&hd=1
Update for modern times: You can use ES modules easily thanks to esm:
export class Foo{
public echo(){
console.log("foo");
}
}
In the REPL:
$ node -r esm
> import { Foo } from './foo.js';
{}
> f = new Foo();