2014-07-16 72 views
2

我正在认真考虑从PHP切换到Node.js。但我不太喜欢Javascript中的原型,所以我会优先考虑Typescript。Node.js Typescript包含

我只是测试基本知识,并创建了一个新的(打字稿)快递在Visual Studio 2013年我已经安装了Node.js for Visual Studio项目。

我创建了一个称为tstests目录,添加的文件从打字稿教程下面的代码称为animals.ts:

class Animal { 
    name: string; 
    constructor(theName: string) { this.name = theName; } 
    move(meters: number) { 
     alert(this.name + " moved " + meters + "m."); 
    } 
} 

class Snake extends Animal { 
    constructor(name: string) { super(name); } 
    move() { 
     alert("Slithering..."); 
     super.move(5); 
    } 
} 

class Horse extends Animal { 
    constructor(name: string) { super(name); } 
    move() { 
     alert("Galloping..."); 
     super.move(45); 
    } 
} 

然后添加以下一段代码app.ts:

/// <reference path='tstests/animals.ts'/> 
var sam = new Snake("Sammy the Python"); 
sam.move(); 

两个智能感知,建设项目工作,但是当我尝试运行项目,我得到的ReferenceError:未定义蛇。

任何人都可以向我解释我如何解决这个问题?

+0

这解释了它多一点:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1 – basarat

回答

3

当您在Node上运行时,可以使用外部模块。

替换:

/// <reference path='tstests/animals.ts'/> 

随着

import Animals = require('tstests/animals'); 

而且在animals.tsexport添加到您希望使用的任何类...

//... 
export class Snake extends Animal { 
//... 

现在,您可以参考Snake课程使用:

var sam = new Animals.Snake("Sammy the Python"); 

节点将为您加载模块并使它们可用。

如果你在浏览器中运行,你必须确保你在脚本标记中的正确的顺序引用的每个脚本 - 但你能避免所有的工作作为节点将做这一切为你。

+0

这奏效了,谢谢!我不得不说,我在互联网上发现的每篇文章都让我更加困惑,因为有些人谈论AMD,其他人则是CommonJS,RequireJS,......而他们都没有一个真正清楚使用多个文件的例子。 最后在阅读TypeScript模块后,我变得更加茫然:-) –

+0

我很高兴答案有帮助。 – Fenton

相关问题