登陆

javascript - 在typescript中如何动态export

接触typescript不久,现需要把以前的项目用ts重写一遍,遇到一个问题:
项目中db的orm都需要实例化才能使用,说明比较困难,请看原js代码:

    //const Redis =  require('redis')
    let initRedis = function(port, host){
         return new Promise((success, fail) => {
             module.exports.redis = Redis.createClient(port, host);
             success();
         })
    }
    

以下为我转换的ts代码:

    const initRedis = function (port:number, host:string): Promise<void> {
        return new Promise((success,fail)=>{
            export let redis = Redis.createClient(port, host);
            success();
        })
    }

遇到的错误:

 error TS1184: Modifiers cannot appear here.

请问 如何才能正确的在执行initRedis方法后再导出redis?

# JavaScript
漂亮男人漂亮男人1581 天前444 次浏览

全部回复(3)我要回复

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-26 10:55:08

    // xxx.ts
    export function initRedis() {}

    use

    import { initRedis } from 'xx';

    回复
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:55:08

    这个是做不到的。
    Typescript的模块是标准符合 ES6 的模块标准, import 和 export 都是static的。

    不过你可以使用类似下面的代码来做一些workaround。

    // dynamic.ts
    
    const _dynamic = {}
    
    export function addDynamic() {
      _dynamic['Redis'] = function () {
        console.log('I am redis')
      }
    }
    
    export const DYNAMIC = _dynamic
    
    // app.ts
    import { addDynamic, DYNAMIC } from '@/models'
    
    addDynamic()
    DYNAMIC['Redis']()

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-06-26 10:55:08

    可以参考这里 https://blogs.msdn.microsoft....

    2.4是已经支持了,等下班回家给你写个范例

    回复
    0
  • 取消回复发送