【问题标题】:Typescript and requirejs打字稿和requirejs
【发布时间】:2014-01-23 03:37:03
【问题描述】:

我有一个工厂模块,它使用 require 来创建所需的对象

getProviderManager(providername: string): VideoProviderManager {

    var providerManager = require(providername);
}

VideoProviderManager 被标记为 `

export class VideoProviderManager 

但是,我有很多 VideoProviderManager 未知的错误,并且 我试过了`

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

但没有成功。我正在尝试将 require 和 export 类与模块的命名空间结合使用 有可能吗?`

【问题讨论】:

    标签: javascript typescript require


    【解决方案1】:

    如果要导出VideoProviderManager作为模块的值,需要使用export =语法:

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

    使用export class VideoProviderManager 意味着该类将被暴露在模块的VideoProviderManager 属性上。

    请参阅The Definitive Guide to TypeScript 了解更多详情。

    另外,对于getProviderManager,您使用的同步 require 语法要求模块已经被 RequireJS 加载。

    【讨论】:

    • 我已将所有文件更改为使用导出和导入,并且所有错误都消失了,但是当我调用 var providerManager = require(providername);我得到了无法找到模块的异常,虽然我给了它绝对路径,但我想根据用户决定使用的内容加载这些模块
    • 如果您尝试加载已卸载的模块,则需要使用异步 require 调用。 require([ providername ], callback)。请注意,第一个参数是一个数组,第二个参数是一个回调,一旦加载模块就会被调用。不,没有其他方法可以从 getProviderManager 函数返回模块值。
    猜你喜欢
    • 2014-06-26
    • 2016-02-03
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2021-08-08
    • 2016-02-06
    相关资源
    最近更新 更多