首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >接口只能扩展带有可选类型参数的标识符/限定名。ts(2499)

接口只能扩展带有可选类型参数的标识符/限定名。ts(2499)
EN

Stack Overflow用户
提问于 2021-12-26 13:27:43
回答 1查看 842关注 0票数 0

我正在尝试为interface创建一个新的扩展express.RequestHandler,但是这个错误似乎出现了。我不明白为什么。

代码语言:javascript
运行
复制
An interface can only extend an identifier/qualified-name with optional type arguments. ts(2499)

express.RequestHandler接口不支持异步函数。上面写着

代码语言:javascript
运行
复制
The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<RequestHandler<ParamsDictionary, any, any, ParsedQs, Record<string, any>>>'?ts(1064)

这是我的接口

代码语言:javascript
运行
复制
export interface IRequest extends express.Request {
    user: IUser;
}

export interface IRequestHandler extends RequestHandler = (
    req: IRequest,
    res: express.Response,
    next: express.NextFunction
) => void | Promise<void>;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-28 06:13:49

您似乎正在尝试扩展express.Request接口。

尝试:

代码语言:javascript
运行
复制
import { NextFunction, Request, Response } from 'express';

interface IUser {
  name: string;
}

declare module 'express' {
  interface Request {
    user: IUser;
  }
}

const controller = async (req: Request, res: Response, next: NextFunction) => {
  console.log(req.user);
};

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70486812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档