gpt4 book ai didi

node.js - 有条件地导入以切换实现

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:32 25 4
gpt4 key购买 nike

我有一个用 TypeScript 编写的 node.js 应用程序,我需要根据配置文件在两个接口(interface)实现之间切换。目前我有这段代码似乎可以正常工作。

"use strict";

import { config } from "../config";

let Something;
if (config.useFakeSomething) {
Something = require("./FakeSomething").FakeSomething;
} else {
Something = require("./RealSomething").RealSomething;
}
...
let s = new Something();
s.DoStuff();
...

但我对此有不好的直觉(主要是因为混合使用 requireimport 来加载模块)。有没有其他方法可以在不导入两个模块的情况下实现基于配置文件的实现切换?

最佳答案

如果您想保持Something 类的客户端代码干净,您可以将条件导入移动到单个文件中。您的 Something 模块可以具有以下目录结构:

/Something
RealSomething.ts
FakeSomething.ts
index.ts

在您的 index.ts 中,您可以拥有以下内容:

import { config } from '../config';

const Something = config.useFakeSomething ?
require('./FakeSomething').FakeSomething :
require('./RealSomething').RealSomething;

export default Something;

在您的客户端代码中,您可以只导入Something:

import Something from './Something/index';

关于node.js - 有条件地导入以切换实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919878/

25 4 0
文章推荐: database - 如何区分多值属性和实体?
文章推荐: database - WSo2 EMM - 应用程序管理数据库错误
文章推荐: php - 使用 AJAX 和 PHP 将 附加到