打字稿,复杂对象和联合类型

时间:2019-06-13 21:11:51

标签: typescript jwt

我是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。 现在如何访问对象的孩子

非常欢迎任何帮助

1 个答案:

答案 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