三斜杠指令是包含单个XML标记的单行注释。注释的内容被用作编译器指令。
三斜杠指令只在包含它们的文件的顶部有效,即在任何注释、语句或声明之前,不然它们会被当作普通的单行注释,无任何特殊含义。
/// <reference path="..." />
该指令用于声明文件之间的依赖关系,指示编译器在编译过程中包含其他额外文件。path指定的路径如果是相对路径,则是以当前文件为根。
编译器会从根文件开始解析该指令,以深度优先的方式,递归地找到所有编译文件。值得注意的是,根文件必须是由tsconfig.json文件中的files或include指定。根文件可以是多个文件,在/// <reference path="..." />中引入不包含在tsconfig.json配置中的文件。
// other/other.ts
console.log('log:other.ts');
/// <reference path="../other/other.ts" />
// print/print.ts
console.log('log:print.ts');
export function hello() {
console.log('log:Function::hello');
}
/// <reference path="print/print.ts" />
// index.ts
console.log('log:index.ts');
hello();
是否编译后的文件一定会执行呢?
这取决于你的运行环境,和组织代码的方式。
当在浏览器环境中运行代码时,如果你编译后的js文件,都通过script标签加载到了网页中去,理所当然这些文件都会被运行。在上面的示例代码中,要在index.ts文件运行hello方法,则网页中通过script标签加载的print/print.js文件必须放在index.js文件之前。
在node环境中,即在本地环境通过node运行编译后的index.js文件,你会发现找不到hello方法的保存。在此环境中,你必须使用require(import)来导入需要的引用。在使用typescript的情况使用import语句后,不需要/// <reference path="..." />也能让编译器识别到被import的文件。
事实上,reference指令的目的是告诉程序可用的function、type或interface的类型,它与声明更加相关。
其他reference指令
-
/// <reference types="..." />声明对包的依赖,如/// <reference types="node" /> -
/// <reference lib="..." />显式地包含一个现有的内置lib文件,如lib="es2015" -
/// <reference no-default-lib="true"/>这个指令将一个文件标记为默认库。在lib.d.ts的顶部可以看到此注释。 -
/// <amd-module />默认情况下,AMD模块是默认生成的。在使用其他工具处理生成的模块时,可能会出现问题。所以该指令允许将可选模块名传递给编译器。
参考资料
stackoverflow:Typescript ///: why doesn’t it work for me?
typescript: triple-slash-directives
三斜线指令(reference)在Typescript中作为编译器指令使用,用于声明文件间的依赖关系。它们仅在文件顶部生效,指示编译器在编译过程中包含其他文件。这些指令帮助组织代码,尤其是在处理模块和类型定义时。编译后的文件是否执行取决于运行环境,例如在浏览器中需要正确加载引用文件,而在Node.js环境中则需要使用import导入。
373

被折叠的 条评论
为什么被折叠?



