我认真考虑从PHP切换到Node.js。但我并不喜欢Javascript中的原型设计,所以我更喜欢使用Typescript。
我只是在测试基础知识并在Visual Studio 2013中创建了一个新的(Typescript)Express项目。我安装了Node.js for Visual Studio。
我创建了一个名为tstests的目录,使用Typescript教程中的以下代码添加了一个名为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();
IntelliSense和构建项目都有效,但是当我尝试运行项目时,我得到一个ReferenceError:Snake未定义。
任何人都可以向我解释我如何解决这个问题吗?
答案 0 :(得分:3)
当您在Node上运行时,您可以使用外部模块。
替换:
/// <reference path='tstests/animals.ts'/>
使用
import Animals = require('tstests/animals');
在animals.ts
中,将export
添加到您想要提供的任何课程中......
//...
export class Snake extends Animal {
//...
您现在可以使用以下方式引用Snake
课程。
var sam = new Animals.Snake("Sammy the Python");
Node将为您加载模块并使其可用。
如果您在浏览器中运行,则必须确保在脚本标记内以正确的顺序引用每个脚本 - 但您可以避免所有这些工作,因为Node将为您完成所有操作。