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

时间:2013-05-29 23:48:36

标签: typescript

我们的项目中有大约一百个.ts个文件和十几个.d.ts个文件。在TypeScript 0.8.3上处理引用时,我们有一个名为_references.d.ts的文件,它按依赖顺序列出了所有定义文件,并确保它出现在项目{{1}中的任何其他打字项之前。文件。

.csproj

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

谢谢!

3 个答案:

答案 0 :(得分:2)

从命令行有一个清晰的TypeScript编译管道更好,我想这就是发生的事情。

我喜欢在我的项目中有一个reference.ts。这反过来引用了我项目中的所有文件。然后我的项目中的每个文件都将此主文件引用为:

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

注意 .ts 而不是 .d.ts

Typescript将解决循环依赖(文件引用之间...而不是类型),您不必担心这一点。

将项目编译为:

tsc --out output.js --declaration

并获得一个js + output.d.ts文件,以便在其他项目中重用。

答案 1 :(得分:2)

我想我发现了什么问题。在我们的_references.d.ts文件中,在任何引用之前有一个在文件顶部声明的接口。编译器没有提供任何信息性错误,只是忽略了那些引用。

因此,所有/// <reference path="..." />都需要在文件中排在第一位。

答案 2 :(得分:1)

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

BTW这是确保每个文件引用定义的一个不错的小技巧,尽管我同意BASarat的说法,使用此设置无法从命令行构建它。

在我们的项目中,我们仅将这些引用用于实际定义文件,所有其他模块都按意图导入。我们提供了一些包装器定义文件,例如general_libraries.d.tsmyproject.core.d.ts。通过这种方式,我们可以轻松添加或删除库的定义文件,而无需在每个引用它们的位置更新它。

另请注意,当您有2个模块时,A&amp; B和A引用定义文件C和B导入A,B知道C而不必再次引用它。