javascript - 在typescript中如何动态export

查看:885
本文介绍了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?

解决方案

这个是做不到的。
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']()

这篇关于javascript - 在typescript中如何动态export的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆