2014-01-05 6 views
0

У меня есть заводской модуль, использование которого требует, чтобы создать нужные объектыМашинопись и requirejs

getProviderManager(providername: string): VideoProviderManager { 

    var providerManager = require(providername); 
} 

VideoProviderManager является decalred как `

export class VideoProviderManager 

Однако у меня есть много ошибок, которые VideoProviderManager не известны и Я попытался `

import VideoProviderManager = require("VideoProvider/VideoProviderManager"); 

Но без успеха , ? Я пытаюсь использовать сочетание требуют и экспорта классов с пространством имен модуля возможно `

ответ

0

Если вы хотите экспортировать VideoProviderManager в качестве значения модуля, вы должны использовать export = синтаксис:

class VideoProviderManager { 
    // ... 
} 
export = VideoProviderManager; 

Использование export class VideoProviderManager означает, что класс будет отображаться на свойстве модуля VideoProviderManager.

Для получения более подробной информации см. The Definitive Guide to TypeScript.

Кроме того, для getProviderManager синтаксис требуемого синхронного запроса требует, чтобы модуль был уже загружен RequireJS.

+0

Я изменил все свои файлы, чтобы использовать экспорт и импорт, и все ошибки ушли, как бы то ни было, когда я вызываю var providerManager = require (имя поставщика); я получаю исключение, что модуль не может быть найден, хотя я дал ему обсолютный путь, я хочу загрузить эти модули в соответствии с тем, что пользователь решил использовать. –

+0

Вам нужно использовать асинхронный вызов 'require', если вы пытаетесь загрузить разгруженный модуль. 'require ([имя провайдера], обратный вызов)'. Обратите внимание, что первым аргументом является массив, а второй - обратный вызов, который будет вызываться после загрузки модуля. Нет, нет другого способа сделать это, когда вы можете вернуть значение модуля из функции 'getProviderManager'. –

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