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?
問題解答
回答1:// xxx.tsexport function initRedis() {}
use
import { initRedis } from ’xx’;回答2:
這個是做不到的。 Typescript的模塊是標準符合 ES6 的模塊標準, import 和 export 都是static的。
不過你可以使用類似下面的代碼來做一些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是已經支持了,等下班回家給你寫個范例
相關文章:
1. django - 后臺返回的json數據經過Base64加密,獲取時用python如何解密~!2. node.js - node 客戶端socket一直報錯Error: read ECONNRESET,用php的socket沒問題哈。。3. tp6表單令牌4. 網絡傳輸協議 - 以下三種下載方式有什么不同?如何用python模擬下載器下載?5. docker 17.03 怎么配置 registry mirror ?6. 我的html頁面一提交,網頁便顯示出了我的php代碼,求問是什么原因?7. 數據庫 - 使用讀寫分離后, MySQL主從復制延遲會導致讀不到數據嗎?8. angular.js - Angular路由和express路由的組合使用問題9. java 排序的問題10. 我在centos容器里安裝docker,也就是在容器里安裝容器,報錯了?
