使用 Visual Studio 的 Node.JS 工具在多个 TypeScript 文件之间共享 类
Sharing classes between multiple TypeScript files using Node.JS Tools for Visual Studio
我目前正在使用 Node.JS 工具 Visual Studio (NTVS) 用 TypeScript 编写一个 Node.JS 项目。我有一些 classes 和枚举分布在我的项目中的 3 或 4 个文件中。我现在正尝试使用我的主应用程序文件中那些文件中定义的 classes。从我之前使用 Node 的工作中,我知道如果我使用文本编辑器和命令行编译器,我通常需要 require
调用来相互导入 file/class。但是,如果我在我的项目中打开任何 TypeScript 文件并开始键入在不同文件中定义的 class 的名称,Visual Studio 会显示 class 名称及其成员的 IntelliSense 自动完成。这让我觉得 NTVS and/or TypeScript 配置自动使我的所有 classes 在项目范围内可用。但是如果我单击 'run' 按钮,错误将打印到控制台,因为 Node 在运行时找不到引用的 classes。
这种行为让我相信 IntelliSense 实际上并没有告诉我 classes 可用,只是它们 存在 (这看起来很奇怪)。如果我在文件顶部添加一个 require
调用,并使用导入的值而不是原始的 class 名称,Node 会找到 class 并且我可以在我的代码中使用它。但这会带来两个问题:
- 我必须为我将 class 导入的变量想出一个新名称。如果我
require()
使用原始名称,Visual Studio 会显示错误,指出标识符重复,因为它似乎认为原始 class 在项目范围内可用。
- 我在使用 class 时没有进行自动完成或类型检查。这几乎违背了使用 TypeScript 的目的。
那么,执行此导入的正确方法是什么?有没有办法让我的所有 classes 在全球范围内可用?如果没有,我需要什么导入语句?
This behavior leads me to believe that IntelliSense isn't actually telling me that the classes are available, just that they exist
除非您有顶级 import
或 export
声明,否则该文件被视为 global 模块并且在项目范围内可用:http://basarat.gitbooks.io/typescript/content/docs/project/modules.html
在 node.js
的运行时,全局模块将 不起作用
您应该使用 import
/export
的文件级模块并使用 --module commonjs
进行编译
我目前正在使用 Node.JS 工具 Visual Studio (NTVS) 用 TypeScript 编写一个 Node.JS 项目。我有一些 classes 和枚举分布在我的项目中的 3 或 4 个文件中。我现在正尝试使用我的主应用程序文件中那些文件中定义的 classes。从我之前使用 Node 的工作中,我知道如果我使用文本编辑器和命令行编译器,我通常需要 require
调用来相互导入 file/class。但是,如果我在我的项目中打开任何 TypeScript 文件并开始键入在不同文件中定义的 class 的名称,Visual Studio 会显示 class 名称及其成员的 IntelliSense 自动完成。这让我觉得 NTVS and/or TypeScript 配置自动使我的所有 classes 在项目范围内可用。但是如果我单击 'run' 按钮,错误将打印到控制台,因为 Node 在运行时找不到引用的 classes。
这种行为让我相信 IntelliSense 实际上并没有告诉我 classes 可用,只是它们 存在 (这看起来很奇怪)。如果我在文件顶部添加一个 require
调用,并使用导入的值而不是原始的 class 名称,Node 会找到 class 并且我可以在我的代码中使用它。但这会带来两个问题:
- 我必须为我将 class 导入的变量想出一个新名称。如果我
require()
使用原始名称,Visual Studio 会显示错误,指出标识符重复,因为它似乎认为原始 class 在项目范围内可用。 - 我在使用 class 时没有进行自动完成或类型检查。这几乎违背了使用 TypeScript 的目的。
那么,执行此导入的正确方法是什么?有没有办法让我的所有 classes 在全球范围内可用?如果没有,我需要什么导入语句?
This behavior leads me to believe that IntelliSense isn't actually telling me that the classes are available, just that they exist
除非您有顶级 import
或 export
声明,否则该文件被视为 global 模块并且在项目范围内可用:http://basarat.gitbooks.io/typescript/content/docs/project/modules.html
在 node.js
您应该使用 import
/export
的文件级模块并使用 --module commonjs