首页 > 解决方案 > jwt.verify(令牌,process.env.JWT_Confirm_KEY)。“对象”类型上不存在属性“id”

问题描述

这是我的代码

const data = jwt.verify(token, process.env.JWT_Confirm_KEY);

当我使用 data.id 时出现错误

await db.ref(`/users/${data.id}`).once("value")

类型 'object'.ts(2339) 上不存在属性 'id'

摆脱错误的一种方法

interface IdEmail {
  id: string;
  email: string;
}

const data = jwt.verify(token, process.env.JWT_Confirm_KEY) as IdEmail;

还有什么其他方法可以摆脱这个错误?

标签: node.jstypescript

解决方案


您可以创建一个自定义泛型函数,它看起来与您的评论相同,但我认为这种方式会更好。

const verify = <T extends object>(token: string, secret: string): T => {
  return jwt.verify(token, secret) as T;
};

const sign = <T extends object>(payload: T, secret: string): string => {
  return jwt.sign(payload, secret);
};

export default const MyJwt = {
  sign,
  verify,
}

用法,

import MyJwt from './MyJwt';

const data = MyJwt.verify<IdEmail>(token, process.env.JWT_Confirm_KEY);
// data now is a IdEmail

推荐阅读