Several methods could benefit from abstract resolvable types for parameters.
For example: Groups#add(user) could take a user ID string, a User object, or even a Member object.
Some possible resolvable types:
type UserResolvable = string | User;
type MemberResolvable = string | Member; // could User work here too?
type GroupResolvable = string | Group; // would it be a good idea to include Member here?
The corresponding class would have (static?) methods for resolving these.
Group.resolve(GroupResolvable): Group // do these need to be async...?
Member.resolve(MemberResolvable): Member
User.resolve(UserResolvable): User
Several methods could benefit from abstract resolvable types for parameters.
For example:
Groups#add(user)could take a user ID string, aUserobject, or even aMemberobject.Some possible resolvable types:
The corresponding class would have (static?) methods for resolving these.