JavaScript 中函数柯里化怎么实现依赖注入
通过柯里化将依赖作为参数逐步传入,可以实现依赖注入。核心做法是定义一个接受依赖的工厂函数,返回一个接受业务参数的函数,从而在调用时分离依赖与逻辑。

如何编写通用的依赖注入柯里化函数
可以编写一个高阶函数,它接收依赖对象和业务函数,返回一个柯里化后的新函数。这样业务逻辑只需关注自身参数,依赖由外部注入。

你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
function curryInject(dependencies, businessFn) {
return function(...args) {
// 将依赖和业务函数的参数合并
const allArgs = [dependencies, ...args];
return businessFn.apply(null, allArgs);
};
}
// 模拟依赖
const dbService = { query: (sql) => `Result for: ${sql}` };
// 业务函数
function getUserData(userId, db) {
return db.query(`SELECT * FROM users WHERE id = ${userId}`);
}
// 注入并调用
const injectedGetUser = curryInject(dbService, getUserData);
console.log(injectedGetUser(101)); // Result for: SELECT * FROM users WHERE id = 101基于具体输入条件的依赖替换验证
当传入不同的依赖对象时,柯里化后的函数会执行不同的依赖逻辑。例如,将数据库服务替换为缓存服务,结果会直接来自缓存而非数据库查询。
立即学习“Java免费学习笔记(深入)”;

// 模拟缓存服务
const cacheService = { get: (key) => `Cached: ${key}` };
// 复用同一个柯里化结构,但注入不同依赖
const cachedGetUser = curryInject(cacheService, getUserData);
console.log(cachedGetUser(101)); // Cached: 101

















