Поскольку у Роли пока нет своего конструктора - создадим свой класс
Код:
class MyRole {
group:UserGroupItem|UserItem[]| OrganisationStructureItem
type: 'group' | 'user' | 'orgstruct'
code: string
constructor (group:UserGroupItem|UserItem[]|OrganisationStructureItem,type:'group' | 'user' | 'orgstruct',code:string){
this.code = code;
this.group = group;
this.type = type;
}
getUsers(): Promise<UserItem[]> {
if(this.type == "group"){
return (<UserGroupItem> this.group).users();
}
else if (this.type == "orgstruct") {
return System.users.search().where(i => i.osIds.has((<OrganisationStructureItem> this.group))).size(10000).all()
}
else return new Promise<UserItem[]>(()=><UserItem[]>this.group)
}
json():any {
return{
code:this.code,
type:this.type
}
}
}
Конструктор принимает либо Группу пользователей, либо пользователя(вернее массив из одного пользователя), либо элемент оргструктуры. Тип соответственно будет либо 'group', либо 'user' , либо 'orgstruct'. У Роли должен быть реализован метод getUsers и json. Второй просто возвращает код и тип. Первый же должен возвращать Промис, который после того как разрешится должен вернуть массив пользователей. В зависимости от type объекта реализовываем функцию getUsers