三斜線指令

三斜線指令是包含單一 XML 標籤的單行註解。註解的內容用作編譯器指令。

三斜線指令在包含檔案的頂端有效。三斜線指令之前只能有單行或多行註解,包括其他三斜線指令。如果在陳述式或宣告之後遇到三斜線指令,則將其視為一般單行註解,且不具備特殊意義。

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

/// <reference path="..." /> 指令是此組中最常見的指令。它用於宣告檔案之間的相依性

三斜線參考會指示編譯器在編譯過程中包含其他檔案。

它們也可用於在使用 outoutFile 時排序輸出。在預處理後,檔案會以輸入後的相同順序發射到輸出檔案位置。

預處理輸入檔案

編譯器會對輸入檔案執行預處理,以解析所有三斜線參考指令。在此過程中,會將其他檔案新增到編譯中。

處理程序從一組根檔案開始;這些是命令列或 tsconfig.json 檔案中的 files 清單中指定的檔案名稱。這些根檔案會以指定的順序預處理。在將檔案新增到清單之前,會處理其中的所有三斜線參考,並包含其目標。三斜線參考會以深度優先的方式解析,順序為在檔案中看到的順序。

如果使用相對路徑,三斜線參考路徑會相對於包含的檔案解析。

錯誤

參照不存在的檔案是錯誤的。檔案對自己的三斜線參考是錯誤的。

使用 --noResolve

如果指定了編譯器標記 noResolve,則會忽略三斜線參考;它們既不會導致新增檔案,也不會變更所提供檔案的順序。

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

類似於作為相依性宣告的 /// <reference path="..." /> 指令,/// <reference types="..." /> 指令宣告對套件的相依性。

解析這些套件名稱的程序類似於在 import 陳述式中解析模組名稱的程序。思考三斜線參考類型指令的簡單方式是將其視為宣告套件的 import

例如,在宣告檔案中包含 /// <reference types="node" /> 宣告此檔案使用在 @types/node/index.d.ts 中宣告的名稱;因此,此套件需要與宣告檔案一起包含在編譯中。

僅在手動撰寫 d.ts 檔案時使用這些指令。

對於在編譯期間產生的宣告檔案,編譯器會自動為您新增 /// <reference types="..." />當且僅當產生的檔案使用來自所參考套件的任何宣告時,才會在產生的宣告檔案中新增 /// <reference types="..." />

若要在 .ts 檔案中宣告對 @types 套件的相依性,請改用命令列或 tsconfig.json 中的 types。請參閱 tsconfig.json 檔案中使用 @typestypeRootstypes 以取得更多詳細資料。

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

此指令允許檔案明確包含現有的內建 lib 檔案。

內建 lib 檔案的參照方式與 tsconfig.json 中的 lib 編譯器選項相同(例如,使用 lib="es2015",而非 lib="lib.es2015.d.ts" 等)。

對於依賴內建類型(例如 DOM API 或內建 JS 執行時期建構函式,如 SymbolIterable)的宣告檔案作者,建議使用三斜線參照 lib 指令。以前,這些 .d.ts 檔案必須新增此類型的轉發/重複宣告。

例如,在編譯中的其中一個檔案中新增 /// <reference lib="es2017.string" /> 等同於使用 --lib es2017.string 編譯。

ts
/// <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
ts
/// <amd-module name="NamedModule"/>
export class C {}

將導致將名稱 NamedModule 指派給模組,作為呼叫 AMD define 的一部分

amdModule.js
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" /> 會告知編譯器關於非 TS 模組相依性,需要注入在產生的模組的 require 呼叫中。

amd-dependency 指令也可以有一個選用的 name 屬性;這允許傳遞 amd-dependency 的選用名稱

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

產生的 JS 程式碼

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

TypeScript 文件是一個開放原始碼專案。透過 傳送 Pull Request ❤ 來協助我們改善這些頁面

此頁面的貢獻者
MHMohamed Hegazy (58)
OTOrta Therox (15)
JMJuyeong Maing (1)
JBJack Bates (1)
GSGurjeet Singh (1)
9+

最後更新:2024 年 3 月 21 日