我是Typescript的新手。到目前为止,我相处得还不错,但是我还不了解的复杂对象还是很正确的。 我目前正在尝试通过jsonwebtoken解码令牌。结果中,我需要一个特殊字段(孩子)。
到目前为止,我的代码:
const decodedToken: string | { [key: string]: any } = jwt.decode(token, {complete: true});
但是现在我真的很难进入孩子领域。在ES5中,我将执行类似decodedToken.kid
的操作但是jwt.decode函数返回的字符串和我不理解的复杂对象的联合类型。
export function decode(
token: string,
options?: DecodeOptions,
): null | { [key: string]: any } | string;
我了解以下返回值。我得到一个字符串为null或具有多个键的对象,并且它们的值均为any。 现在如何访问对象的孩子?
非常欢迎任何帮助
答案 0 :(得分:1)
您所需要做的就是type-test进入一种类型:
private $ssl_check = true;
这是您应该做的(假设if (typeof decodedToken === 'string') {
// Here it's definitely a string
} else {
// Here it's definitely an object
}
的类型签名正确),因为decode
不会产生正确的输出。
如果您知道,那么它只会返回一个对象(因为"somestring".kid
是一个库函数,并且您只会放入对象,因此您只会接收对象),那么您可以改用类型转换来通知TypeScript确定性:
decode