node.js - 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;
还有什么其他方法可以摆脱这个错误?
解决方案
您可以创建一个自定义泛型函数,它看起来与您的评论相同,但我认为这种方式会更好。
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
推荐阅读
- php - 将 PHP 和 MySQL 创建的 CSV 保存到服务器
- html - 带有居中图标的 Angular Material mat-nav-list 多行
- android - Jenkins CI/CD 无法发布到 Android Playstore
- sql - 仅选择非空列值并使用 sql 查询仅显示该值
- python - python中的随机平滑斜率
- javascript - 在组件渲染中调用高阶组件
- macos - MAC 上包含/排除命令的 Rsync 问题
- spring-mvc - 我们可以使用单一方法在 Spring REST 中处理 HTTP POST 和 PUT
- php - Zend 框架模型中是否有任何 beforeSave 或 afterSave 方法?
- r - 用于输入信息的绘图生成中间功能