鍍金池/ 教程/ HTML/ 三斜線指令
初始化項目結(jié)構(gòu)
聯(lián)合類型
介紹
介紹
介紹
編譯選項
TypeScript 1.6
介紹
介紹
發(fā)展路線圖
介紹
在MSBuild里使用編譯選項
可迭代性
TypeScript 1.3
介紹
介紹
TypeScript 1.1
變量聲明
即將到來的Angular 2框架是使用TypeScript開發(fā)的。 因此Angular和TypeScript一起使用非常簡單方便
tsconfig.json
介紹
介紹
介紹
在MSBuild里使用編譯選項
使用TypeScript的每日構(gòu)建版本
新建工程
枚舉
三斜線指令
結(jié)合ASP.NET v5使用TypeScript
TypeScript里的this
介紹
TypeScript 1.4
編碼規(guī)范
介紹
模塊解析
ASP.NET 4
架構(gòu)概述
介紹
介紹
ASP.NET Core
TypeScript 1.8
介紹
介紹
創(chuàng)建簡單工程
TypeScript 1.7
TypeScript 1.5
NPM包的類型
支持TypeScript的編輯器

三斜線指令

三斜線指令是包含單個XML標簽的單行注釋。 注釋的內(nèi)容會做為編譯器指令使用。

三斜線指令可放在包含它的文件的最頂端。 一個三斜線指令的前面只能出現(xiàn)單行或多行注釋,這包括其它的三斜線指令。 如果它們出現(xiàn)在一個語句或聲明之后,那么它們會被當做普通的單行注釋,并且不具有特殊的涵義。

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

/// <reference path="..." />指令是三斜線指令中最常見的一種。 它用于聲明文件間的依賴。

三斜線引用告訴編譯器在編譯過程中要引入的額外的文件。

當使用--out--outFile時,它也可以做為調(diào)整輸出內(nèi)容順序的一種方法。 文件在輸出文件內(nèi)容中的位置與經(jīng)過預(yù)處理后的輸入順序一致。

預(yù)處理輸入文件

編譯器會對輸入文件進行預(yù)處理來解析所有三斜線引用指令。 在這個過程中,額外的文件會加到編譯過程中。

這個過程會以一些根文件開始; 它們是在命令行中指定的文件或是在tsconfig.json中的"files"列表里的文件。 這些根文件按指定的順序進行預(yù)處理。 在一個文件被加入列表前,它包含的所有三斜線引用都要被處理,還有它們包含的目標。 三斜線引用以它們在文件里出現(xiàn)的順序,使用深度優(yōu)先的方式解析。

一個三斜線引用路徑是相對于包含它的文件的,如果不是根文件。

錯誤

引用不存在的文件會報錯。 一個文件用三斜線指令引用自己會報錯。

使用 --noResolve

如果指定了--noResolve編譯選項,三斜線引用會被忽略;它們不會增加新文件,也不會改變給定文件的順序。

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

這個指令把一個文件標記成默認庫。 你會在lib.d.ts文件和它不同的變體的頂端看到這個注釋。

這個指令告訴編譯器在編譯過程中不要包含這個默認庫(比如,lib.d.ts)。 這與在命令行上使用--noLib相似。

還要注意,當傳遞了--skipDefaultLibCheck時,編譯器只會忽略檢查帶有/// <reference no-default-lib="true"/>的文件。

/// <amd-module />

默認情況下生成的AMD模塊都是匿名的。 但是,當一些工具需要處理生成的模塊時會產(chǎn)生問題,比如r.js。

amd-module指令允許給編譯器傳入一個可選的模塊名:

amdModule.ts
///<amd-module name='NamedModule'/>
export class C {
}

這會將NamedModule傳入到AMD define函數(shù)里:

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" />告訴編譯器有一個非TypeScript模塊依賴需要被注入,做為目標模塊require調(diào)用的一部分。

amd-dependency指令也可以帶一個可選的name屬性;它允許我們?yōu)閍md-dependency傳入一個可選名字:

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

生成的JavaScript代碼:

define(["require", "exports", "legacy/moduleA"], function (require, exports, moduleA) {
    moduleA.callStuff()
});
上一篇:介紹下一篇:支持TypeScript的編輯器