我正在尝试编译一个打字稿文件,并且它不断从编译器中抛出此错误:
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
库来定义类型。任何帮助将不胜感激。
答案 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