TypeScript управление пакетами

Похож, что TypeScript имеет приятную модульную систему, однако это заменяет необходимость чего-то вроде requirejs? Другими словами, когда вы "компилируете" пакет TypeScript, он обрабатывает все разрешение зависимостей для вас? Примеры были бы оценены!

Ответы

Ответ 1

TypeScript не имеет загрузчика модуля времени выполнения. Вам все равно необходимо предоставить загрузчик модуля для использования во время выполнения, например. требуется js. TypeScript поддерживает создание кода JavaScript, совместимого с commonJS (для скриптов node.js) и загрузчиков AMD (например, requireJS). Чтобы указать, какой из них следует использовать в коммутаторе "-module" для компилятора с "amd" или "commonjs".

Вот как вы экспортируете модуль в TypeScript:

export module depModule { 
    export class A { 
    }
}

а вот сгенерированный код JavaScript с ключом -module amd:

define(["require", "exports"], function(require, exports) {
    (function (depModule) {
        var A = (function () {
            function A() { }
            return A;
        })();
        depModule.A = A;
    })(exports.depModule || (exports.depModule = {}));
})

Ответ 2

TypeScript может испускать код, который будет работать как с совместимыми с AMD загрузчиками зависимостей, такими как requirejs или commonjs, такими как Node. Вы можете контролировать это с помощью опции -module для компилятора. Сам компилятор не обрабатывает разрешение зависимостей во время выполнения, что вам нужно решить, но он пытается найти зависимости во время компиляции, чтобы он мог предоставить вам информацию о типе.

Вы можете увидеть примеры проектов, которые используют модули в тестовом каталоге в CodePlex, этот. Результатом компиляции этих тестовых проектов являются файлы .js, которые будут загружаться либо с помощью, например, requirejs (если вы передадите --module amd) или Node (если вы передадите --module commonjs).

Ответ 3

Если ваше приложение будет состоять только из typescript модулей/файлов, возможно, не использовать загрузчики модулей или другое управление зависимостями. Вам нужно будет включить все зависимости с комментариями и использовать опцию -out компилятора. Например:

tsc --out compiled.js app.ts

Это поставит в compiled.js сгенерированный js для app.ts и всех его зависимостей, включая зависимости зависимостей. Полученный файл затем может быть включен непосредственно в html файл с тегом script. Его также можно минимизировать. Загрузка модуля во время выполнения не поддерживается.