Импортировать jQuery и другие сторонние библиотеки в TypeScript как модули с использованием AMD

Вопрос. Есть ли способ импортировать jquery в модуль TypeScript, используя поддержку AMD (через компилятор), поэтому он включает jquery в качестве зависимости?

Ключом является получение инструкции import, которая делает зависимость модуля зависимой в инструкции define (см. ниже).

define(["require", "exports", 'dataservice', 'jquery', 'knockout'], 
    function(require, exports, __ds__, $ , ko) { 
         ...
    }
)

Подробнее: Я хочу импортировать jquery (и другие сторонние библиотеки) в качестве модулей TypeScript с AMD. Цель состоит в том, чтобы заставить их отображаться как зависимость в списке require. Однако единственным способом сделать TypeScript для этого является наличие инструкции import. И для импорта вам нужен модуль для импорта. Но... нет jquery-модуля, на который нужно ссылаться. к.

Обходные

  • Я могу ссылаться на .d.ts и preload jquery в main.js для require.js, но это означает предварительную загрузку всех сторонних библиотек. Не страшно, но не идеально, так как он не использует то, что мы можем уже делать с JavaScript и AMD.
  • Я могу создать модуль для каждой сторонней библиотеки и обернуть его, но тогда я получаю что-то вроде $. $. Что еще хуже, IMO (и Irisk записывают неправильный код модуля для каждого из них и выходят из синхронизации).

Итак, теперь я просто загружаю jquery в main.js. но опять же, но это меньше идеала. Должен сделать это для любой библиотеки, такой как нокаут, позвоночник и т.д., У которого нет модуля.

Любые лучшие предложения или что-то мне не хватает?

Update/Разъяснение:

Я также могу использовать прокладки в конфигурации для зависимостей между библиотеками. Но это все еще предваряет сторонние. Пример:

require.config({
    baseUrl: '../',
    paths: {
        'jquery': 'lib/jquery-1.7.2',
        'underscore': 'lib/underscore'
    }, 
    shim: {
        jquery: {
            exports: '$'
        },
        underscore: {
            exports: '_'
        }
    }
});

Ответ 1

Еще одна работа вокруг будет использовать определение типа для requirejs и использовать ваши собственные операторы require, а не инструкцию import.

Недостатком этого является то, что TypeScript import может использоваться с AMD или CommonJS только с изменением компилятора, поэтому вы будете жениться на requirejs в своей программе больше, чем на import.

Существует существующее определение для requirejs на определенном типе.