为什么 Typescript 编译器不将 .ts 更改为 .js?

Why does Typescript compiler not change .ts to .js?

在下图中左侧的文件夹中,您可以看到我的 /src 打字稿(蓝色)已编译到我的 /dist (紫色)Javascript 使用 tsc.

您可以看到在左侧的源文件中引用了一个.ts 模块文件,它没有编译成引用右侧的.js 模块文件。

为什么不呢?如果 tsc 不转换引用,Javascript 怎么可能 运行?

第二个问题:然后我尝试手动将编译参考从 .ts 更改为 .js 和 运行ning node dist/server.js 但我得到错误 找不到模块 tools/typescriptImport.js'。为什么node在正确引用的时候找不到模块(而且可以看到最右边是模块)?

您不应该在 import 命令中编写扩展名 .ts

对应文档:http://www.typescriptlang.org/Handbook#modules-going-external

首先,您必须从 import 中删除 .ts 扩展。 TypeScript 表示它将它视为静态字符串并且不会更改它。

其次,根据经验,我猜想使用 .d.ts 文件可能会解决您的 module not found 错误。我已经用这个小技巧解决了很多次。您可以使用 /// <reference path="tools/typeScriptImports.d.ts" /> 引用它。想象一下 .d.ts 作为 TypeScript 的头文件。

最后,尝试创建相对于 server.js 文件的路径。所以:./tools/typeScriptImports.