如何扩展由DefinitelyTyped社区定义的函数声明?

问题描述 投票:0回答:1

我正在使用TypeScript项目中的jsonwebtoken库。与该库一起,我导入了@types/jsonwebtoken库以提供类型。在此库中,jsonwebtoken的函数verify declared as following

export function verify(
  token: string, 
  secretOrPublicKey: Secret, 
  options?: VerifyOptions
): object | string;

但是我想指定它确切返回的对象,而不仅仅是object | string,是由以下接口定义的对象:

export interface DecodedJwtToken {
  userId: string;
  primaryEmail: string;
}

如何在我的项目中实现它?是否可以在不进行类型转换的情况下完成,即

const decodedToken: DecodedJwtToken = verify(token, JWT_PRIVATE_KEY) as DecodedJwtToken;

谢谢你。

typescript types definitelytyped
1个回答
1
投票

您正在寻找的是module augmentation

import { Secret, VerifyOptions } from 'jsonwebtoken';

export interface DecodedJwtToken {
    userId: string;
    primaryEmail: string;
}

declare module 'jsonwebtoken' {
    function verify(token: string, secretOrPublicKey: Secret, options?: VerifyOptions): DecodedJwtToken;
}
© www.soinside.com 2019 - 2024. All rights reserved.