正在检查设置存储库中的用户角色(typescript,aurelia)

正在检查设置存储库中的用户角色(typescript,aurelia),typescript,authentication,npm,aurelia,Typescript,Authentication,Npm,Aurelia,我正在做一些授权的导航。我做了这样的事 run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> { let requiredRoles = navigationInstruction.getAllInstructions() .map(i => i.config.settings.roles)[0]; toastr

我正在做一些授权的导航。我做了这样的事

run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0];

    toastr.success('TEST1');

    let isUserInRole = requiredRoles?   
        requiredRoles.some(r => r === this.userIdentity.role) : true;

    toastr.success('TEST2');//LINE IT`S NOT EXECUTED

    return isUserInRole? next() : next.cancel(new Redirect('users/login'));    
}
run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0] as string[];
  ...  
}
run(导航说明:导航说明,下一步:下一步):承诺{
让requiredRoles=navigationInstruction.getAllInstructions()
.map(i=>i.config.settings.roles)[0];
toastr.success(“TEST1”);
让isUserInRole=requiredRoles?
requiredRoles.some(r=>r==this.userIdentity.role):true;
toastr.success('TEST2');//行它未执行
return isUserInRole?next():next.cancel(新重定向('users/login'));
}
所需角色-我已选中,它返回给我值


在我的可视化代码中,我有这样一条消息:
参数'r'隐式地有一个'any'类型,但是可以从用法推断出一个更好的类型。ts(7044)

我想你可以做的是将
.roles][0]
转换为字符串(我从代码的外观猜)

run(导航说明:导航说明,下一步:下一步):承诺{
让requiredRoles=navigationInstruction.getAllInstructions()
.map(i=>i.config.settings.roles)[0]作为字符串;
...  
}
编辑:如果角色是字符串数组,那么您的代码应该如下所示

run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0];

    toastr.success('TEST1');

    let isUserInRole = requiredRoles?   
        requiredRoles.some(r => r === this.userIdentity.role) : true;

    toastr.success('TEST2');//LINE IT`S NOT EXECUTED

    return isUserInRole? next() : next.cancel(new Redirect('users/login'));    
}
run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0] as string[];
  ...  
}
run(导航说明:导航说明,下一步:下一步):承诺{
让requiredRoles=navigationInstruction.getAllInstructions()
.map(i=>i.config.settings.roles)[0]作为字符串[];
...  
}

这样做应该可以解决问题。

更改后,我得到以下信息:
类型“string”上不存在属性“some”。ts(2339)