Node.js JS(TYPESCRIPT)属性';需求';不存在于类型';节点模块';

Node.js JS(TYPESCRIPT)属性';需求';不存在于类型';节点模块';,node.js,typescript,Node.js,Typescript,我在子文件中使用this.status和this.req时遇到问题 我像这样初始化路由索引 router.use(response); 我的索引文件在下面 import {Request,Response,NextFunction} from 'express' module.exports = function(req:Request, res:Response, next:NextFunction){ const responseTypes = { unproce

我在子文件中使用this.status和this.req时遇到问题

我像这样初始化路由索引

router.use(response);
我的索引文件在下面

import {Request,Response,NextFunction} from 'express'

module.exports = function(req:Request, res:Response, next:NextFunction){
    const responseTypes = {
        unprocessable: require('./unprocessable')
    };

    res = {...res, ...responseTypes};
    next();
};
这是我的unprocessable.ts文件

import log from '../logger'
import queue from '../queue'

module.exports = function (data, message) {
    log.warn('Sending unprocessable entity response: ', data, message || 'unprocessable entity');
    const req = this.req;
    const res = this;

    // Dump it in the queue
    const response = { response: { status: 'error', data: data, message: message ? message : 'unprocessable entity' } };
    response.requestId = req.requestId;

    queue.add('logResponse', response);

    if (data !== undefined && data !== null) {
        if (Object.keys(data).length === 0 && JSON.stringify(data) === JSON.stringify({})) {
            data = data.toString();
        }
    }

    if (data) {
        this.status(422).json({ status: 'error', data: data, message: message ? message : 'unprocessable entity' });
    } else {
        this.status(422).json({ status: 'error', message: message ? message : 'unprocessable entity' });
    }
};
它在unprocessable.ts文件中抱怨以下问题

import log from '../logger'
import queue from '../queue'

module.exports = function (data, message) {
    log.warn('Sending unprocessable entity response: ', data, message || 'unprocessable entity');
    const req = this.req;
    const res = this;

    // Dump it in the queue
    const response = { response: { status: 'error', data: data, message: message ? message : 'unprocessable entity' } };
    response.requestId = req.requestId;

    queue.add('logResponse', response);

    if (data !== undefined && data !== null) {
        if (Object.keys(data).length === 0 && JSON.stringify(data) === JSON.stringify({})) {
            data = data.toString();
        }
    }

    if (data) {
        this.status(422).json({ status: 'error', data: data, message: message ? message : 'unprocessable entity' });
    } else {
        this.status(422).json({ status: 'error', message: message ? message : 'unprocessable entity' });
    }
};
如果我使用此.status,则类型“NodeModule”上不存在属性“status”

如果使用this.req,则类型“NodeModule”上不存在属性“req”


我不知道如何解决这个问题,因为我对typescript是新手,在使用
这个
关键字时,typescript在很大程度上不知道您指的是什么

但是,您可以告诉typescript您所说的
这是什么意思,例如:

function someFunction(this:object){
//用这个做点什么
}
在您的情况下,
指的是从express扩展
响应
的对象,因此您可以执行以下操作:

const{Response}=require('express');
接口IModifiedResponse扩展响应{
//在此处定义您的属性
无法处理:(数据:对象,消息:字符串)=>void
}
函数不可处理(此:IModifiedResponse,数据:object,消息:string){
//在你的函数中使用这个
}
但是,我不知道this.req指的是什么,因为响应没有req属性。看

希望这个答案有帮助:)