自动将类方法链接在一起

时间:2019-11-02 03:57:29

标签: typescript class methods overloading control-flow

下面有一个示例类。我正在寻找一种从这些基本功能方法中更好地创建组合方法的方法。

class UserService {
    getUserByUuid (uuid) {}
    getUserByEmail (email) {}
    async getScopedMembers (user) {
        return await this.getScopedMembers(user)
    }
    getMembers (scopedMembers) {
        return scopedMembers.map(scopedMember => scopedMember.member)
    }
    getContacts (members) {
        return _.uniqBy(members.map(member => member.contact), 'id')
    }
    getContactsWithoutSelf ({ contacts, user }) {
        return contacts.filter(contact => contact.id !== user.contact.id)
    }
}

我遇到的问题是使用这些函数创建易于使用的api。

我一次又一次地发现自己必须创建许多使用这些详细功能的函数,例如getMembersByUuid(uuid),它们首先会吸引用户,然后是getScopedMembers,然后是getMembers。然后我发现我需要另一个函数getMembersByUser,并且不得不编写另一个便利函数。

有没有其他方法可以将这些功能粘合在一起?

我研究了组成,流,管道,重载,抽象类,没有解决方案。

0 个答案:

没有答案