2014-06-14 3 views
2

Я создал foo.ts так:Как использовать класс Typcript в Nodejs REPL?

class Foo{ 
    public echo(){ 
    console.log("foo"); 
    } 
} 

И выводит яваскрипт такого кода:

var Foo = (function() { 
    function Foo() { 
    } 
    Foo.prototype.echo = function() { 
     console.log("foo"); 
    }; 
    return Foo; 
})(); 

Я хочу вызвать echo функции в nodejs РЕПЛ, но в конце концов ошибки, как это:

$ 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) 

Как я могу создать экземпляр класса и вызвать функцию echo?

+2

Я не уверен, как работает машинопись, но ясно, что вы ничего не экспортируете из Foo.js (и вы не назначаете requi красный модуль на что угодно). Возможно, сначала ознакомьтесь с модульной системой узла. –

ответ

2

У Node.js нет утечки глобального типа, как браузер window объект.

Чтобы использовать код машинопись в node.js вам нужно использовать CommonJS и экспорта Класс IE

class Foo{ 
    public echo(){ 
    console.log("foo"); 
    } 
} 

export = Foo; 

Тогда в REPL:

$ node 
> var Foo = require('./foo.js'); 
{} 
> f = new Foo(); 

Чтобы узнать больше о AMD/CommonJS : https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

Смежные вопросы