【问题标题】:Node.js Typescript inclusionsNode.js Typescript 包含
【发布时间】:2016-12-30 00:24:13
【问题描述】:

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

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

我创建了一个名为 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。

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

【问题讨论】:

标签: node.js visual-studio typescript visual-studio-2013 ntvs


【解决方案1】:

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

【讨论】:

  • 成功了,谢谢!我不得不说,我在互联网上找到的每一篇文章都让我更加困惑,因为有些人谈论 AMD,其他人谈论 CommonJS,RequireJS,......而且他们都没有一个关于使用多个文件的非常明确的例子。最后,在阅读了 TypeScript 模块后,我变得更加茫然:-)
  • 我很高兴答案有所帮助。
猜你喜欢
  • 2017-12-24
  • 1970-01-01
  • 2020-03-01
  • 2013-10-28
  • 2012-11-12
  • 2017-08-07
  • 2016-11-24
  • 2013-04-28
  • 2018-05-28
相关资源
最近更新 更多