从{}对象获取属性

时间:2018-03-12 14:48:32

标签: angular typescript

我正在使用具有方法loadUserInfo(): KeycloakPromise<{}, void>的库。我使用`this.getKeycloakInstance()。loadUserInfo()。success(data =&gt; {             this.user.id =(data).sub;

我使用调试器检查了这个data对象是否有我要分配给this.user.id的字段sub我不能这样做因为我收到编译错误:TS2339: Property 'sub' does not exist on type '{}'.

我无法更改方法loadUserInfo()的返回类型,因为它是我必须使用的外部库。我可以以某种方式获得此sub属性而不会出错吗?

1 个答案:

答案 0 :(得分:3)

您可以使用variable['sub'],或将变量键入any

this.getKeycloakInstance()
  .loadUserInfo()
  .success(data => this.user.id = data.sub); // error

this.getKeycloakInstance()
  .loadUserInfo()
  .success(data => this.user.id = data['sub']); // no error

this.getKeycloakInstance()
  .loadUserInfo()
  .success(data => this.user.id = (data as any).sub); // no error

this.getKeycloakInstance()
  .loadUserInfo()
  .success((data: any) => this.user.id = data.sub); // no error