Typescript 中的条件默认导出

Bot*_*ázs 5 javascript node.js typescript ecmascript-6

我有以下来自教程的 JS 代码:

if (process.env.NODE_ENV === 'production') {
  module.exports = require('./configureStore.prod');
} else {
  module.exports = require('./configureStore.dev');
}
Run Code Online (Sandbox Code Playgroud)

configureStore.*.ts两个文件都有一个默认导出:

export default function configureStore(initialState?: State) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我想将之前代码片段中的条件导出翻译成 TypeScript。如果我将代码保留原样,则会出现编译时错误:

error TS2306: File 'configureStore.ts' is not a module.
Run Code Online (Sandbox Code Playgroud)

经过一些试验和错误,我可以得到以下编译:

import {Store} from "redux";
import {State} from "../reducers";

let configureStore: (state?: State) => Store<State>;

if (process.env.NODE_ENV === "production") {
  configureStore = require("./configureStore.prod");
} else {
  configureStore = require("./configureStore.dev");
}

export default configureStore;
Run Code Online (Sandbox Code Playgroud)

我尝试像这样使用它:

import configureStore from "./store/configureStore";

const store = configureStore();
Run Code Online (Sandbox Code Playgroud)

但我在运行时收到此错误消息:

TypeError: configureStore_1.default is not a function
Run Code Online (Sandbox Code Playgroud)

如何将原始代码成功翻译成 TypeScript?

uni*_*nal 4

if (process.env.NODE_ENV === "production") {
  configureStore = require("./configureStore.prod").default;
} else {
  configureStore = require("./configureStore.dev").default;
}
Run Code Online (Sandbox Code Playgroud)