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




Поддержите перевод документации:



Поддерживатель | Github Репозиторий


Documentation generated by mdoc.
Молния! Обновления, новости и статьи Typescript.