带有字符串键的嵌套对象上的打字稿错误:TS7015:元素隐式具有“任何”类型,因为索引表达式的类型不是“数字”

时间:2020-06-07 13:52:56

标签: typescript typescript-typings

我有以下界面:

type HasuraClaim = {
  'x-hasura-default-role': string;
  'x-hasura-user-id': string;
  'x-hasura-allowed-roles': string[];
};

export interface IdToken {
  family_name: string;
  given_name: string;
  name: string;
  'https://hasura.io/jwt/claims': HasuraClaim;
  sub: string;
  <...more here...>
}

当我按如下方式访问它时:

const role = idToken['https://hasura.io/jwt/claims']['x-hasura-default-role']

我收到以下错误,并在['x-hasura-default-role']下划线:

TS7015:元素隐式地具有“ any”类型,因为索引表达式的类型不是“ number”。

如何更改输入内容,以使打字稿不会发出警告?我还没有使用嵌套的字符串键找到类似的问题。

编辑:我发现我可以做到以下几点而不会出现问题:

const claims = idToken['https://hasura.io/jwt/claims'];
const role = claims['x-hasura-default-role'];

1 个答案:

答案 0 :(得分:0)

问题似乎出在您的声明上。您需要将idToken推断为IdToken

const idToken: IdToken = { ... }