接触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?
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
这个是做不到的。
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/150
提交
取消