admin管理员组文章数量:1422554
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();
本文标签: javascriptHow to use Typescript class in Nodejs REPLStack Overflow
版权声明:本文标题:javascript - How to use Typescript class in Nodejs REPL? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745349685a2654690.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论