TypeScript基础入门教程之三重斜线指令详解


Posted in Javascript onOctober 22, 2018

前言

TypeScript是Javascript的超集,实现以面向对象编程的方式使用Javascript。当然最后代码还是编译为Javascript。

三斜杠指令是包含单个XML标记的单行注释。 注释的内容用作编译器指令。

三斜杠指令仅在其包含文件的顶部有效。 三重斜杠指令只能在单行或多行注释之前,包括其他三重斜杠指令。 如果在声明或声明之后遇到它们,则将它们视为常规单行注释,并且没有特殊含义。

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

/// <reference path ="..."/>指令是该组中最常见的。 它充当文件之间的依赖声明。

三斜杠引用指示编译器在编译过程中包含其他文件。

它们还可以作为在使用?out或?outFile时对输出进行排序的方法。 在预处理传递之后,文件以与输入相同的顺序发送到输出文件位置。

该过程从一组根文件开始; 这些是在命令行或tsconfig.json文件的”files”列表中指定的文件名。 这些根文件按照指定的顺序进行预处理。 在将文件添加到列表之前,将处理其中的所有三重斜杠引用,并包括其目标。 三重斜杠引用按照它们在文件中看到的顺序以深度优先方式解析。

如果无根则,则相对于包含文件解析三斜杠参考路径。

错误

引用不存在的文件是错误的。 如果文件具有对自身的三斜杠引用,则会出错。

使用?noResolve

如果指定了编译器标志?noResolve,则忽略三次斜杠引用; 它们既不会导致添加新文件,也不会更改所提供文件的顺序。

/// <reference types="..." />

类似于/// <reference path ="..."/>指令,该指令用作依赖声明; 但是, /// <references types ="..."/>指令声明了对包的依赖性。

解析这些包名称的过程类似于在import语句中解析模块名称的过程。 考虑三重斜杠引用类型指令的简单方法是作为声明包的导入。

例如,在声明文件中包含/// <references types ="node"/>声明此文件使用在types/node/index.d.ts中声明的名称; 因此,此包需要与声明文件一起包含在编译中。

只有在手动创建d.ts文件时才使用这些指令。

对于编译期间生成的声明文件,编译器会自动为您添加/// <references types ="..."/>; 当且仅当生成的文件使用引用包中的任何声明时,才会添加生成的声明文件中的/// <reference types ="..."/>

/// <reference lib="..." />

该指令允许文件显式包含现有的内置lib文件。

内置的lib文件以与tsconfig.json中的”lib”编译器选项相同的方式引用(例如,使用lib=”es2015”而不是lib=”lib.es2015.d.ts”等)。

对于在内置类型上进行中继的声明文件作者,例如 建议使用DOM API或内置的JS运行时构造函数(如Symbol或Iterable,三斜杠引用lib指令)。 以前这些.d.ts文件必须添加此类型的前向/重复声明。

例如,将/// <reference lib="es2017.string"/>添加到编译中的一个文件等效于使用?lib es2017.string进行编译。

/// <reference lib="es2017.string" />

"foo".padStart(4);

/// <reference no-default-lib="true"/>

该指令将文件标记为默认库。 您将在lib.d.ts及其不同变体的顶部看到此注释。

该指令指示编译器不在编译中包含默认库(即lib.d.ts)。 这里的影响类似于在命令行上传递?noLib。

另请注意,在传递?skipDefaultLibCheck时,编译器将仅跳过使用/// <reference no-default-lib ="true"/>检查文件。

/// <amd-module />

默认情况下,AMD模块是匿名生成的。 当使用其他工具处理结果模块(例如捆绑器(例如r.js))时,这会导致问题。

amd-module指令允许将可选模块名称传递给编译器:

amdModule.ts

///<amd-module name="NamedModule"/>
export class C {
}

将导致将名称NamedModule分配给模块作为调用AMD定义的一部分:

amdModule.js

define("NamedModule", ["require", "exports"], function (require, exports) {
 var C = (function () {
 function C() {
 }
 return C;
 })();
 exports.C = C;
});

/// <amd-dependency />

注意:此指令已被弃用。使用import”moduleName”;而是声明。

/// <amd-dependency path ="x"/>通知编译器需要在结果模块的require调用中注入的非TS模块依赖项。

amd-dependency指令也可以有一个可选的name属性; 这允许传递amd依赖的可选名称:

/// <amd-dependency path="legacy/moduleA" name="moduleA"/>
declare var moduleA:MyType
moduleA.callStuff()

生成的JS代码:

define(["require", "exports", "legacy/moduleA"], function (require, exports, moduleA) {
 moduleA.callStuff()
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript 替换Html标签实现代码
Oct 14 Javascript
JavaScript实现简单图片滚动附源码下载
Jun 17 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 Javascript
Js apply方法详解
Feb 16 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 Javascript
js定时器+简单的动画效果实例
Nov 10 Javascript
浅谈React和Redux的连接react-redux
Dec 04 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
JavaScript刷新页面的几种方法总结
Mar 28 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
Oct 22 #Javascript
vue-cli项目中使用echarts图表实例
Oct 22 #Javascript
vue使用echarts图表的详细方法
Oct 22 #Javascript
在vue中使用echarts图表实例代码详解
Oct 22 #Javascript
Koa 使用小技巧(小结)
Oct 22 #Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 #Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 #Javascript
You might like
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
浅析javascript的return语句
2015/12/15 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
python基础while循环及if判断的实例讲解
2017/08/25 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
基于FME使用Python过程图解
2020/05/13 Python
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
学校采购员岗位职责
2014/01/02 职场文书
安全生产目标责任书
2014/04/14 职场文书
员工生日活动方案
2014/08/24 职场文书
2014年班干部工作总结
2014/11/25 职场文书
银行实习推荐信
2015/03/27 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
五年级作文之想象作文
2019/10/30 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
Python爬虫基础初探selenium
2021/05/31 Python
2022微信温控新功能上线
2022/05/09 数码科技