升级到TypeScript 0.9.0.alpha的引用出现问题

升级到TypeScript 0.9.0.alpha的引用出现问题,typescript,Typescript,我们的项目中大约有100个.ts文件和12个.d.ts文件。在TypeScript 0.8.3中,为了处理引用,我们有一个名为_references.d.ts的文件,它按照依赖关系的顺序列出了所有定义文件,并确保它出现在项目的.csproj文件中的任何其他TypeScript项之前 这样,所有引用都被正确解析,而无需在任何typescript源文件中添加任何引用。但是,升级到TypeScript 0.9.0.alpha后,这似乎不再起作用。现在,即使我们在每个源文件中引用_references.

我们的项目中大约有100个.ts文件和12个.d.ts文件。在TypeScript 0.8.3中,为了处理引用,我们有一个名为_references.d.ts的文件,它按照依赖关系的顺序列出了所有定义文件,并确保它出现在项目的.csproj文件中的任何其他TypeScript项之前

这样,所有引用都被正确解析,而无需在任何typescript源文件中添加任何引用。但是,升级到TypeScript 0.9.0.alpha后,这似乎不再起作用。现在,即使我们在每个源文件中引用_references.d.ts,并且必须遍历所有源文件并包括对每个定义文件的直接引用,它也不起作用。这将是一个痛苦的过程,我也不喜欢这种方法,因为我们无法知道每个.ts文件中未使用的引用,也没有简单的方法来清理它们。所以我的问题是,这是设计带来的痛苦,还是有其他方法可以让编译器对引用感到满意


谢谢

最好从命令行为TypeScript编译提供一个清晰的管道,我想这就是已经发生的事情

我想在我的项目中有一个推荐人。然后引用我项目中的所有文件。然后,我的项目中的每个文件都将此主文件引用为:

/// <reference path="references.ts" />

您可以得到一个js+output.d.ts文件,以便在其他项目中重用

最好从命令行为TypeScript编译提供一个清晰的管道,我想这就是已经发生的事情

我想在我的项目中有一个推荐人。然后引用我项目中的所有文件。然后,我的项目中的每个文件都将此主文件引用为:

/// <reference path="references.ts" />

您可以得到一个js+output.d.ts文件,以便在其他项目中重用

我不完全确定,但alpha版本可能缺少此功能。考虑到它是0.9的预览版,因此还不支持所有功能。0.9 alpha中也缺少一些已知的特性。当然,您可能希望转到TypeScript项目站点并直接询问他们

顺便说一句,这是一个很好的小技巧,可以确保每个文件都引用了定义,尽管我同意BASarat的观点,即使用这种设置无法从命令行构建它

在我们的项目中,我们只对实际的定义文件使用这些引用,所有其他模块都按照预期导入。我们提供了一些包装器定义文件,例如general_libraries.d.ts和myproject.core.d.ts。通过这种方式,我们可以轻松地添加或删除库的定义文件,而无需在它们引用的每个地方都进行更新


另外请注意,当您有两个模块,A&B和A引用了定义文件C和B导入A时,B知道C而无需再次引用它。

我不完全确定,但alpha版本可能只是缺少此功能。考虑到它是0.9的预览版,因此还不支持所有功能。0.9 alpha中也缺少一些已知的特性。当然,您可能希望转到TypeScript项目站点并直接询问他们

顺便说一句,这是一个很好的小技巧,可以确保每个文件都引用了定义,尽管我同意BASarat的观点,即使用这种设置无法从命令行构建它

在我们的项目中,我们只对实际的定义文件使用这些引用,所有其他模块都按照预期导入。我们提供了一些包装器定义文件,例如general_libraries.d.ts和myproject.core.d.ts。通过这种方式,我们可以轻松地添加或删除库的定义文件,而无需在它们引用的每个地方都进行更新


还要注意的是,当你有两个模块时,A&B和A引用了一个定义文件C和B导入了A,B不必再次引用它就知道了C。

我想我找到了问题所在。在我们的_references.d.ts文件中,有一个在任何引用之前在文件顶部声明的接口。编译器没有给出任何信息错误,只是忽略了这些引用


所以所有的///都需要放在文件的第一位。

我想我找到了问题所在。在我们的_references.d.ts文件中,有一个在任何引用之前在文件顶部声明的接口。编译器没有给出任何信息错误,只是忽略了这些引用


因此,所有的///都需要放在文件的第一位。

不仅0.9引入了对0.8的突破性更改。您正在生产项目中使用alpha版本。我会考虑至少等到它消失了。它是在一个单独的分支。因此,我们希望尽可能与最新版本兼容,并报告可能影响代码的问题。我更喜欢在生产环境中使用最新版本。它只生成javascript,这是人类可以观察到的。如果它正在生成bina
我本可以清楚地看到:0.9不仅会给0.8带来突破性的变化。您正在生产项目中使用alpha版本。我会考虑至少等到它消失了。它是在一个单独的分支。因此,我们希望尽可能与最新版本兼容,并报告可能影响代码的问题。我更喜欢在生产环境中使用最新版本。它只生成javascript,这是人类可以观察到的。如果它生成的是二进制文件,我会很清楚:我尝试了.ts而不是.d.ts,但我看不出有什么不同。我在see第11.1.1节中也没有看到任何关于源文件和定义文件的依赖关系处理方式不同的内容。我看到的唯一区别是,对于.ts文件,创建了一个源映射文件,而不是.d.ts文件。如果.d.ts包含的所有文件都是对.ts文件的引用,则不会产生影响。但是如果将声明放在.d.ts中,它们将不会成为生成的.d.ts的一部分。看:我试过了.ts而不是.d.ts,但我看不出有什么不同。我在see第11.1.1节中也没有看到任何关于源文件和定义文件的依赖关系处理方式不同的内容。我看到的唯一区别是,对于.ts文件,创建了一个源映射文件,而不是.d.ts文件。如果.d.ts包含的所有文件都是对.ts文件的引用,则不会产生影响。但是如果将声明放在.d.ts中,它们将不会成为生成的.d.ts的一部分。见:
tsc --out output.js --declaration