我正在try 解码JWT令牌,以判断它是否有效. 但是我得到的错误是,解码的对象可能是‘未定义的’

import jwt_decode, { JwtPayload } from "jwt-decode";
    if (token) {
      const decoded = jwt_decode<JwtPayload>(token || "") || null;

      if (decoded) {
        const currentTime = Date.now() / 1000;
        if (decoded?.exp < currentTime) {  //Object is possibly 'undefined'.
          dispatch(logout());
          localStorage.removeItem("token");
          setLoading(false);
        }
      }
}

推荐答案

decoded.exp可能是undefined,所以你必须先判断一下,然后再与currentTime进行比较

if (decoded?.exp && decoded.exp < currentTime) { }

Typescript相关问答推荐

在角形加载组件之前无法获取最新令牌

如何根据参数的值缩小函数内的返回类型?

net::BER_RECTION_REUSED和Uncatch使用Axios和TanStack-Query useMutation时未捕获错误(DelivercMutation)

APP_INITIALIZER—TypeError:appInits不是函数

根据另一个属性的值来推断属性的类型

react 路由Use RouteLoaderData类型脚本错误

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

使用泛型识别对象值类型

为什么TypeScrip不能解析对象析构中的赋值?

如何避免从引用<;字符串&>到引用<;字符串|未定义&>;的不安全赋值?

必需的输入()参数仍然发出&没有初始值设定项&q;错误

可赋值给类型的类型,从不赋值

任何导航器都未处理有效负载为";params";:{";roomId";:";...";}}的导航操作

获取类属性的类型';TypeScript中的getter/setter

如何实现允许扩展泛型函数参数的类型

什么';是并类型A|B的点,其中B是A的子类?

定义一个只允许来自另一个类型的特定字符串文字的类型的最佳方式

React中的效果挂钩在依赖项更新后不会重新执行

剧作家测试未加载本地网址

React 中如何比较两个对象数组并获取不同的值?