jsonwebtoken Typescript编译问题?

时间:2017-10-31 22:03:51

标签: typescript json-web-token

我正在尝试编译一个打字稿文件,并且它不断从编译器中抛出此错误: error TS2339: Property 'payload' does not exist on type 'string | object'. Property 'payload' does not exist on type 'string'.

有问题的代码:

decode(token: string): any {
  const decodedJWT = jwt.decode(token, { complete: true });

  const issuer = decodedJWT.payload.iss;
                           ^^^^^^^^^
  return {};
}

我使用@types/jsonwebtoken库来定义类型。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

此错误是由TypeScript类型检查引起的,jwt.decode()的返回类型是null | object | string,如果您确定jwt.decode()总是返回一个对象,则可以转换{{1} } decodedJWT类型以避免此错误:

any

在上面的示例中,它可能会在运行时导致异常,因为decode(token: string): any { const decodedJWT = jwt.decode(token, { complete: true }); const issuer = (decodedJWT as any).payload.iss; return {}; } 可能会返回jwt.decode()或字符串,但只有object包含属性null,所以你以更安全的方式更好地处理返回值:

payload