javascript - 在typescript中如何動(dòng)態(tài)export
問(wèn)題描述
接觸typescript不久,現(xiàn)需要把以前的項(xiàng)目用ts重寫(xiě)一遍,遇到一個(gè)問(wèn)題: 項(xiàng)目中db的orm都需要實(shí)例化才能使用,說(shuō)明比較困難,請(qǐng)看原js代碼:
//const Redis = require(’redis’) let initRedis = function(port, host){ return new Promise((success, fail) => { module.exports.redis = Redis.createClient(port, host); success(); }) }
以下為我轉(zhuǎn)換的ts代碼:
const initRedis = function (port:number, host:string): Promise<void> {return new Promise((success,fail)=>{ export let redis = Redis.createClient(port, host); success();}) }
遇到的錯(cuò)誤:
error TS1184: Modifiers cannot appear here.
請(qǐng)問(wèn) 如何才能正確的在執(zhí)行initRedis方法后再導(dǎo)出redis?
問(wèn)題解答
回答1:// xxx.tsexport function initRedis() {}
use
import { initRedis } from ’xx’;回答2:
這個(gè)是做不到的。 Typescript的模塊是標(biāo)準(zhǔn)符合 ES6 的模塊標(biāo)準(zhǔn), import 和 export 都是static的。
不過(guò)你可以使用類(lèi)似下面的代碼來(lái)做一些workaround。
// dynamic.tsconst _dynamic = {}export function addDynamic() { _dynamic[’Redis’] = function () { console.log(’I am redis’) }}export const DYNAMIC = _dynamic
// app.tsimport { addDynamic, DYNAMIC } from ’@/models’addDynamic()DYNAMIC[’Redis’]()回答3:
可以參考這里 https://blogs.msdn.microsoft....
2.4是已經(jīng)支持了,等下班回家給你寫(xiě)個(gè)范例
相關(guān)文章:
1. 管理員信息修改時(shí)的密碼問(wèn)題2. angular.js - 輸入郵箱地址之后, 如何使其自動(dòng)在末尾添加分號(hào)?3. android - RxJava 中有根據(jù)條件執(zhí)行不同函數(shù)的操作符嗎?4. javascript - 后臺(tái)管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過(guò)搜索去定位到具體某一個(gè)菜單項(xiàng)位置,并展開(kāi)當(dāng)前菜單5. java如何生成token?6. 如何解決docker宿主機(jī)無(wú)法訪(fǎng)問(wèn)容器中的服務(wù)?7. javascript - html5的data屬性怎么指定一個(gè)function函數(shù)呢?8. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas9. mysql - 電商如何存儲(chǔ)營(yíng)業(yè)額數(shù)據(jù)10. html5 - 為什么使使用vue cli 腳手架,post-css 沒(méi)有自動(dòng)對(duì)css3屬性自動(dòng)添加瀏覽器前綴呢?
