Table of Contents #
Директивы с тремя наклонными чертами (triple-slash directives) являются однострочными комментариями, включающими в себя единственный тэг XML. Содержимое комментария используется в качестве директив компилятору.
Директивы с тремя наклонными чертами имеют силу, находясь только в начале содержащего их файла. Перед директивой с тремя наклонными чертами могут идти только однострочные или многострочные комментарии, а также другие директивы с тремя наклонными чертами. Если такая директива встретится после команды или объявления, она будет считаться однострочным комментарием, не имеющим специального значения.
/// <reference path="..." />
Директива /// <reference path="..." />
используется наиболее часто. Она служит в качестве объявления зависимости между файлами.
Ссылки с тремя наклонными чертами говорят компилятору о необходимости включения дополнительных файлов в процесс компиляции.
Они также служат для упорядочивания вывода при использовании --out
или --outFile
. Файлы создаются в выходном каталоге в том же порядке, в каком были поданы на вход после прохода предварительный обработки.
Предварительная обработка входных файлов
Чтобы разрешить директивы с тремя наклонными чертами, компилятор выполняет проход для предварительной обработки входных файлов. Во время этой процедуры в компиляцию добавляются дополнительные файлы.
Процесс начинается с набора корневых файлов (root files) - это имена файлов, указанные в командной строке или в списке "files"
файла tsconfig.json
. Эти корневые файлы обрабатываются в том же порядке, в каком они были указаны. До того, как файл добавляется в список, обрабатываются все находящиеся в этом файле ссылки с тремя наклонными чертами. Ссылки с тремя наклонными чертами разрешаются способом поиска в глубину (depth first manner), в порядке, в каком они были представлены в файле.
Если в ссылке с тремя наклонными чертами не указан полный путь, она разрешается относительно содержащего её файла.
Ошибки
Ссылка не несуществующий файл является ошибкой. Если в файле есть ссылка с тремя наклонными чертами на самого себя, это также будет ошибкой.
Использование --noResolve
Если указан флаг компилятора --noResolve
, то ссылки с тремя наклонными чертами игнорируются: не будут добавлены какие-либо новые файлы и не будет изменен порядок предоставленных файлов.
/// <reference no-default-lib="true"/>
Такая директива помечает файл в качестве библиотеки по умолчанию. Подобный комментарий можно найти в начале файла lib.d.ts
, а также в его различных вариантах.
Эта директива говорит компилятору не включать в сборку библиотеку по умолчанию (например lib.d.ts
). В данном случае результат аналогичен указанию в командной строке ключа --noLib
.
Также стоит отметить, что при указании ключа --skipDefaultLibCheck
компилятор пропустит лишь файлы с /// <reference no-default-lib="true"/>
.
/// <amd-module />
Модули AMD по умолчанию генерируются безымянными. Это может привести к проблемам в случаях, когда для обработки получившихся модулей используются сторонние инструменты создания пакетов (bundlers) (например r.js
).
Директива amd-module
позволяет передать компилятору необязательное имя модуля:
amdModule.ts
/// export class C { }
Приведет к присвоению модулю имени NamedModule
в составе вызова AMD define
:
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 уже после обработки.
Директива amd-dependency
также может содержать необязательное свойство name
, позволяющее передать имя для amd-зависимости:
/// declare var moduleA:MyType moduleA.callStuff()
Сгенерированный JS-код:
define(["require", "exports", "legacy/moduleA"], function (require, exports, moduleA) { moduleA.callStuff() });
Blue tablet Red tablet