2

我正在认真考虑从 PHP 切换到 Node.js。但我不太喜欢 Javascript 中的原型设计,所以我更喜欢 Typescript。

我只是在测试基础知识并在 Visual Studio 2013 中创建了一个新的 (Typescript) Express 项目。我安装了用于 Visual Studio的 Node.js。

我创建了一个名为 tstests 的目录,添加了一个名为 animals.ts 的文件,其中包含来自 Typescript 教程的以下代码:

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 is not defined。

谁能向我解释我必须如何解决这个问题?

4

1 回答 1

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 会为您完成所有这些工作。

于 2014-07-16T16:49:18.007 回答