TypeScript基础入门教程之三重斜线指令详解
作者:Gowhich 发布时间:2024-11-15 22:22:29
前言
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()
});
来源:https://www.gowhich.com/blog/958


猜你喜欢
- 前言想要使用摄像头实现一个多人姿态识别环境安装下载并安装 Anaconda官网连接 https://anaconda.cloud/insta
- 将近两个多月没有敲linux命令,手指头不听话了。该再次温习卖油翁的故事了。曾为oracle如何启动多个实例运行纠结过,不服输心理。当时在一
- 目录1.字符串的介绍2.字符串的下标3.字符串切片4.字符串find()操作5.字符串index()操作6.字符串count()操作7.字符
- 导语小伙伴们大家好~如今的游戏可谓是层出不穷,NBA 2K系列啊,FIFA系列啊更是经典中的经典,不过小编发现,赛车游戏也是深受大家欢迎啊,
- 七牛云存储的 Python 语言版本 SDK(本文以下称 Python-SDK)是对七牛云存储API协议的一层封装,以提供一套对于 Pyth
- 前言目前机器学习框架有两大方向,Pytorch和Tensorflow 2。对于机器学习的小白的我来说,直观的感受是Tensorflow的框架
- 阻塞任务是阻止当前线程继续进行的任务。如果在 asyncio 程序中执行阻塞任务,它会停止整个事件循环,从而阻止任何其他协程继续进行。我们可
- 一、Python 操作 Excel 的常用库小伙伴你好,在开始操作 Excel 之前,你需要安装 Python 和一些相关库。可以使用 pi
- 我想从文件读数据的话,要比直接从数据库快一些吧(个人观点),昨天测试了读出6000条新闻,读数据库用了23579毫秒,读文件只用了123毫秒
- 问题你要通过网络连接发送和接受连续数据的大型数组,并尽量减少数据的复制操作。解决方案下面的函数利用 memoryviews 来发送和接受大数
- 在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效。seaborn官方文档见链接:http://seaborn.py
- 目录selenium模块selenium基本概念基本使用基于浏览器自动化的操作selenium处理iframe:selenium模拟登陆QQ
- 笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做
- 本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里
- 最近用php进行文件目录信息读取,在网上弄到下面一段代码://获取指定目录下的文件列表//$path 指定的目录,默认为当前目录//$ifc
- 本例中以CentOS6.6下修改MySQL5.1.73举例说明。1.首先输入“service mysqld status”查看当前mysql
- MySQL是关系型数据库中的明星,MongoDB是文档型数据库中的翘楚。下面通过一个设计实例对比一下二者:假设我们正在维护一个手机产品库,里
- 以这两个域名为例:http://www.knowsky.com/http://code.knowsky.com/这两个域名都是绑在同一个空间
- scipy.misc.logsumexp函数的输入参数有(a, axis=None, b=None, keepdims=False, ret
- PyCharm 是我用过的python编辑器中,比较顺手的一个。而且可以跨平台,在macos和windows下面都可以用,这点比较好。是py