很抱歉这个问题看起来很愚蠢,但我想这样的代码实现是有意义的。让我们假设用户服务有一个公共接口。
export interface IUsersService {
getOne(id:string): UserType
getAll(): UserType[]
}
我们有两种不同的UserService实现,假设是CustomUserService
和DefaultUserService
,这两个服务必须满足接口或者实现接口,抱歉我的英语。
如果我想创建一个逻辑,根据.env常量选择其中一个服务,该怎么办?
const userEnv = process.env.APP_USER
? process.env.APP_USER
: 'default';
然后,我们应该有一些像Map或列表选择正确的服务由关键userEnv
const services: Record<string, UserInterface> = {
default: { DefaultUserService },
custom: {CustomUserService}
};
在正确构建这样一个逻辑之后,我们就可以将.env
定义的服务导出到控制器或模块,无论什么。我上面做的逻辑是不正确的,我不知道如何使它与服务正确。你对此有什么建议吗?请。
1条答案
按热度按时间hpxqektj1#
您似乎喜欢使用IUsersService接口的不同实现来抽象服务。
可以使用Record来实现,所以这是一个不错的方法,可以将键userEnv设置为一个数字或类似的值,通过该键引用Record中使用
myServiceMappings[userEnv]
的服务实现,使用该键上用户服务的实现。