我正在使用这个库https://github.com/chentsulin/koa-bearer-token,它为像这样的koa库请求对象添加了额外的属性ctx.request.token。因此,如果我直接使用koa类型,则会收到错误消息,告诉我该token属性不存在ctx.request.token。
我创建了一个名为的类型定义文件koa-bearer-token.d.ts,其中包含库的类型,并导出扩展的koa上下文/请求类型:
declare module 'koa-bearer-token' {
import {Context, Request, Middleware} from 'koa';
interface Options {
queryKey?: string;
bodyKey?: string;
headerKey?: string;
reqKey?: string;
}
interface RequestWithToken extends Request {
token?: string
}
interface ContextWithToken extends Context {
request: RequestWithToken
}
export default function bearerToken(options?: Options): Middleware;
export {RequestWithToken, ContextWithToken};
}
Run Code Online (Sandbox Code Playgroud)
然后我在其他文件中使用它,例如:
import {ContextWithToken} from 'koa-bearer-token';
const someFunction = (ctx: ContextWithToken) => {
const token = ctx.request.token; // <-- No …Run Code Online (Sandbox Code Playgroud)