2015-12-30 2 views
1

Я играю с TypeScript и GoogleMaps, и я нашел несколько JS-библиотек, которые я не знаю, правильно ли я их использую.требуют модулей AMD в Typcript

Im пытается загрузить и модуль AMD (infobubble) с помощью требуют, как следовать примеру:

/// <reference path="../typings/tsd.d.ts" /> 

import $ = require("jquery"); 
import Visor = require("./Visor"); 
import GoogleMapsLoader = require('google-maps'); 

//THIS IS IMPORTANT TO LOAD JS AMD LIBRARIES 
declare var require: (moduleId: string) => any; 
var InfoBubble: any = require("./libs/infobubble"); 

Этот кусок кода работает хорошо, но я не уверен, если это правильный путь.

ответ

0

Операторы import выполняют то же самое, что требуют вызова AMD, если вы компилируете --module amd или --module umd. Таким образом, вы должны быть в состоянии упростить код и просто написать:

import $ = require('jquery'); 
import Visor = require('./Visor'); 
import GoogleMapsLoader = require('google-maps'); 
import InfoBubble = require('./libs/infobubble'); 

(В качестве побочного сведению, я также рекомендовал бы, чтобы вместо того, чтобы использовать эталонный комментарий, вы включаете свой typings.d.ts файл в командной строке при запуске tsc, или положить его в files массив tsconfig.json.

Причиной этого является то, что ссылки на комментарии влияют на всю окружающую среду компиляции , а не только окружающую среду файла они находятся, что означает если вы измените/удалите этот файл, вы можете случайно сломать свою сборку, когда другие файлы косвенно полагаются на это комментарий.)

+0

Спасибо за совет :) – JaviSR

+0

Я попытался использовать 'import InfoBubble = require ('./ libs/infobubble');' но я получаю следующую ошибку: 'ошибка TS2307: не удается найти модуль ' ./libs/infobubble'.' – JaviSR

+0

Вам нужно будет создать соответствующий файл d.ts в './libs/infobubble.d.ts', чтобы TypeScript знал, что импортируется. Это может быть так просто, как 'declare var infobubble: any; export = infobubble; ', или вы можете на самом деле моделировать библиотеку, чтобы получить точную информацию для ввода. –

Смежные вопросы