Node.js 类型为'的参数;(请求:ProtectedRequest,res:Response<;any>;,next:NextFunction)';不可分配给类型为';异步函数';
我正在使用Typescrript编写Express后端。我在名为Node.js 类型为'的参数;(请求:ProtectedRequest,res:Response<;any>;,next:NextFunction)';不可分配给类型为';异步函数';,node.js,typescript,express,Node.js,Typescript,Express,我正在使用Typescrript编写Express后端。我在名为app requsest.d.ts的文件中自定义了请求类型,它包含:PublicRequest,ProtectedRequest。当我为req指定其中一个作为类型数据时,但是VS代码返回错误。它看起来像: Argument of type '(req: ProtectedRequest, res: Response<any>, next: NextFunction) => Promise<void>'
app requsest.d.ts
的文件中自定义了请求类型,它包含:PublicRequest
,ProtectedRequest
。当我为req
指定其中一个作为类型数据时,但是VS代码返回错误。它看起来像:
Argument of type '(req: ProtectedRequest, res: Response<any>, next: NextFunction) => Promise<void>' is not assignable to parameter of type 'AsyncFunction'
注册
我试图修复它,但我不知道原因
有人能告诉我原因并告诉我如何修复吗?谢谢
import { Request } from 'express';
import User from '../database/model/User';
import Keystore from '../database/model/Keystore';
declare interface PublicRequest extends Request {
apiKey: string;
}
declare interface ProtectedRequest extends Request {
user: User;
accessToken: string;
keystore: Keystore;
}
import express from 'express';
import { SuccessResponse } from '../../../middleware/ApiResponse';
import UserRepo from '../../../database/repository/UserRepo';
import User from '../../../database/model/User';
import validator from '../../../helpers/validator';
import asyncHandler from '../../../helpers/asyncHandler';
import { BadRequestError } from '../../../middleware/ApiError';
import bcrypt from 'bcrypt';
import schema from './schema';
import _ from 'lodash';
import { PublicRequest } from 'app-request';
const router = express.Router();
router.post(
'',
validator(schema.signup),
asyncHandler(async (req: PublicRequest, res) => {
const user = await UserRepo.findByEmail(req.body.email);
if (user) throw new BadRequestError('User already registered');
const passwordHash = await bcrypt.hash(req.body.password, 10);
const { user: createdUser } = await UserRepo.create(
{
fullname: req.body.fullname,
username: req.body.username,
phone: req.body.phone,
email: req.body.email,
profilePicUrl: req.body.profilePicUrl,
password: passwordHash,
} as User
);
new SuccessResponse('Signup Successful', {
user: _.pick(createdUser, ['_id', 'fullname', 'name', 'phone', 'email', 'profilePicUrl'])
}).send(res);
}),
);
export default router;