网站搜索

TypeScript (.ts) 与其 JavaScript (.js) 的关系是如何维护的?


我有一个 TypeScript 项目运行良好。我创建了第二个项目,并通过文件系统复制了一些之前的代码。除了 .js 文件现在与 .ts 文件不同步之外,一切都正常。我现在知道如何解决这个问题:删除两个文件,然后通过 Visual Studio 界面拖动 ts 文件再次复制(这样会自动生成 .js 文件)。无论如何,我很好奇,现在我想知道,.ts 和 .js 是如何互相识别的?在 ASP.NET 中,你有代码隐藏(code behind)的概念,但在这里我看不出这是如何实现的。Visual Studio 是在一个隐藏文件中保持这种关系吗?

答案#1

在 TypeScript 语言规范第75页(第9.1章)中:

默认情况下,每个实现源文件在编译时都会生成一个 JavaScript 输出文件,但声明源文件不会生成输出。

ts 文件和 js 文件之间实际上没有真正的关联,除了名称之外。ts 文件会被编译成 js 文件,并且在运行时会加载 js 文件。请注意,js 文件的实际命名与模块名称无关,你需要自己负责相应地加载脚本(例如在你的 html 页面中使用 <script>)。

在你的情况下,只需复制并添加对 ts 文件的引用就可以了。添加引用后,务必将生成操作更改为“TypeScriptCompile”,以确保它会被传递给 TypeScript 编译器:在解决方案资源管理器中选择文件,按 F4 打开属性窗口,然后更改生成操作。

更新:如评论中所述,要使文件“嵌套”,您可以卸载项目并向 js 元素添加子元素,例如转换

<Content Include="some.js" />
<TypeScriptCompile Include="some.ts" />

到

<Content Include="some.js">
    <DependentUpon>some.ts</DependentUpon>
</Content>
<TypeScriptCompile Include="some.ts" />