这是我的代码
const data = jwt.verify(token, process.env.JWT_Confirm_KEY);
当我使用 data.id 时出现错误
await db.ref(`/users/${data.id}`).once("value")
<块引用>
属性 'id' 不存在于类型 'object'.ts(2339)
消除错误的一种方法
interface IdEmail {
id: string;
email: string;
}
const data = jwt.verify(token, process.env.JWT_Confirm_KEY) as IdEmail;
还有什么其他方法可以消除这个错误?
答案 0 :(得分:0)
验证后,您必须解码令牌。试试这个:
const { id, email } = jwt.decode(token, { json: true }) as IdEmail;
答案 1 :(得分:0)
你可以创建一个自定义的泛型函数,它看起来和你的评论一样,但我认为这种方式会更好。
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