小编Dan*_*ebb的帖子

使用新的定义文件添加到现有的库打字稿类型

我正在使用这个库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)

types typescript koa

6
推荐指数
1
解决办法
2526
查看次数

标签 统计

koa ×1

types ×1

typescript ×1