# 定义

reference (引用)TypeScript 3.0的新特性,它支持将项目的各个部分定义为单独的TypeScript模块, 分割成更小的组成部分。除此之外,这允许以不同的方式配置这些模块,分别构建它们等等。

# 什么是项目引用

每个引用的path属性都可以指向包含 tsconfig.json 文件的目录,或者配置文件本身(可以有任何名称)。当你引用一个项目时:

  • 从被引用的项目中导入模块将会加载它的输出声明文件(.d.ts)
  • 如果引用的项目生成outFile,则在此项目中将显示输出文件.d.ts文件的声明
  • 如果需要,构建模式将自动构建引用的项目

# Note

引用的工程必须启用新的composite设置。 这个选项用于帮助TypeScript快速确定引用工程的输出文件位置。 若启用composite标记则会发生如下变动:

  • 对于rootDir设置,如果没有被显式指定,默认为包含tsconfig文件的目录
  • 所有的实现文件必须匹配到某个include模式或在files数组里列出。如果违反了这个限制,tsc会提示你哪些文件未指定。
  • 必须开启declaration选项。

# 作用

reference 属性作用是 指定工程引用依赖。通过分成多个项目,可以大大提高类型检查和编译的速度,减少使用编辑器时的内存使用,并改善对程序逻辑组的执行。

# 使用

type Reference = string[] & {
  path: string;
  prepend?: Boolean;
}
1
2
3
4

prepend选项可以启用前置某个依赖的输出,前置工程会将工程的输出添加到当前工程的输出之前。它对.js文件和.d.ts文件都有效,source map文件也同样会正确地生成。

# tsconfig.json

{
	"references": [
		// ... path
		"some/path/which/you/want/to/set/it",
	]
}
1
2
3
4
5
6

或者这样使用

{
	"references": [{
		"path": "some/path/which/you/want/to/set/it",
		"prepend": true
	}]
}
1
2
3
4
5
6

# 快来耍耍啊

# 🌰🌰

// template
1

# 游乐场


# 参考答案

// answer
1

# 参考资料

Typescript Handbook Reference (opens new window)

How to use project references in TypeScript 3.0? (opens new window)

What is a Project Reference? (opens new window)