使用适用于Visual Studio的Node.JS工具在多个TypeScript文件之间共享类

时间:2015-07-11 02:56:27

标签: node.js visual-studio typescript ntvs

我目前正在使用Node.JS Tools for Visual Studio(NTVS)编写一个用TypeScript编写的Node.JS项目。我的项目中有3个或4个文件,有几个类和枚举。我现在正在尝试使用我的主应用程序文件中的那些文件中定义的类。从我之前使用Node开始,我知道如果我使用文本编辑器和命令行编译器,我通常需要require调用来导入每个其他文件/类。但是,如果我在项目中打开任何TypeScript文件并开始键入在不同文件中定义的类的名称,Visual Studio将显示类名及其成员的IntelliSense自动完成。这让我觉得NTVS和/或TypeScript配置会自动使我的所有类在项目范围内都可用。但是,如果单击“运行”按钮,错误将打印到控制台,因为Node无法在运行时找到引用的类。

这种行为让我相信IntelliSense实际上并没有告诉我这些类是可用的,只是它们存在(这看起来很奇怪)。如果我在文件的顶部添加require调用,并使用该导入的值而不是原始的类名,Node会找到该类,我可以在我的代码中使用它。但这提出了两个问题:

  • 我必须想出一个新名称,用于我导入类的变量。如果我require()使用原始名称,Visual Studio会显示错误,指出标识符是重复的,因为它似乎相信原始类在项目范围内可用。
  • 我没有得到自动完成或类型检查我的课程用法。这几乎违背了使用TypeScript的目的。

那么,进行此导入的正确方法是什么?有没有办法让我的全部课程全球可用?如果没有,我需要哪些导入语句?

1 个答案:

答案 0 :(得分:1)

  

这种行为让我相信IntelliSense实际上并没有告诉我这些类是可用的,只是它们存在

除非您拥有顶级importexport语句,否则该文件将被视为全局模块,并且可在项目范围内使用:http://basarat.gitbooks.io/typescript/content/docs/project/modules.html 全局模块将在node.js

中的运行时无效

您应该使用import / export使用文件级模块,并使用--module commonjs

进行编译