javascript - Typescript 中的条件默认导出

标签 javascript node.js typescript ecmascript-6

我有教程中的以下 JS 代码:

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

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

export default function configureStore(initialState?: State) {
    // ...
}

我想将前一个代码片段中的条件导出转换为 TypeScript。如果我只是按原样保留代码,则会出现编译时错误:

error TS2306: File 'configureStore.ts' is not a module.

经过反复试验,我可以编译以下内容:

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;

我试过这样使用它:

import configureStore from "./store/configureStore";

const store = configureStore();

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

TypeError: configureStore_1.default is not a function

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

最佳答案

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

关于javascript - Typescript 中的条件默认导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45251209/

相关文章:

javascript - jquery.load 函数

javascript - 精确匹配字符串

javascript - 以可变 Angular 存储表单数据

javascript - 在 CoffeeScript 模块中导出对象的优雅方法是什么?

javascript - NgRx @Effect 与 createEffect

javascript - 防止对 php 的垃圾 XMLHTTP 请求

node.js - 实际上在不验证的情况下从发布中排除文件

javascript - 在循环( Node )中使用 Promise

typescript :如何创建类型的副本但更改属性类型

javascript - Webpack 和 TypeScript : module resolution error