在旧版本的Typescript中,需要添加着名的
/// <reference
标签以添加所需的引用。现在版本 1.6 后,我们可以使用推荐的ES6方式导入依赖项
import Greeter from "./greeter";
我已经阅读了一段时间,但我仍然不清楚是否以及为什么必须完全避免三重斜杠参考。
顺便说一句。如果我们在tsconfig.json中使用filesGlob
而不是files
,编译器现在会知道编译TS文件的顺序是什么?
答案 0 :(得分:3)
首先,我不相信filesGlob
已得到官方支持:https://github.com/Microsoft/TypeScript/issues/1927
现在,就三重斜杠引用而言,它不需要像那样长,因为tsconfig.json 中files
引用了所有内容。
您会发现,如果您使用tsd
或typings
之类的工具来管理外部库的类型定义,则会创建一个包含在tsconfig.json中的文件。单个文件将使用三次斜杠引用来包含其余文件。
答案 1 :(得分:2)
当使用内部模块/命名空间时,我们需要///<reference
以告诉编译器什么依赖于什么来构建依赖图并按正确的顺序对文件进行排序。
您描述的ES6方式是(外部)模块,请参阅https://github.com/Microsoft/TypeScript/issues/2242。因此,连接的顺序不相关,因为它们是异步加载的。
因此,使用ES6模块,您不需要///<references
。
对于fileGlobs,这在TypeScript中尚未实现,但即使它已经实现,我认为它不太可能改变项目中文件的依赖项解析的任何内容。即使在他们实现fileGlobs的atom-typescript中,它们也是opinionated against代码,而且#34;依赖于任何形式的js排序&#34;并且除了在tsconfig.json中手动排序文件之外,他们不会以任何其他方式支持。