此问题在此处已有答案:
How to access the correct this
inside a callback(15个答案)
How does the "this" keyword work, and when should it be used?(22个回答)
8天前关闭
我正在使用TypeScript开发Node.js应用程序,其中我有一个基类控制器(BaseController)和一个派生控制器(SettingController)。派生控制器应该使用基类的方法,但是当从SettingController的示例调用Ok方法时,我收到以下错误:
TypeError:无法读取未定义的属性(阅读“OK”)
**验证码:**SettingController.ts:
import { Request, Response, NextFunction } from 'express';
// ... other imports
export default new class SettingController extends BaseController {
constructor() {
super();
}
async SettingOTP(req: Request, res: Response, next: NextFunction) {
try {
// ... Some operations
return this.Ok(res, 'OTP setting updated successfully');
} catch (error: any) {
this.BadRerquest(res, error.message);
}
}
// ... other methods
}
字符串
BaseController.ts:
import { Response } from 'express';
// ... other imports
export class BaseController {
// ... constructor and other methods
Ok<T>(res: Response, message: string) {
return new SuccessResponse(message).send(res);
}
}
型
**尝试次数:**我已经确保BaseController被正确导入,并且Ok方法被定义并且没有被覆盖。我已经尝试在SettingController的构造函数中绑定方法,并且我确保TypeScript编译没有问题。
**问题:**为什么在SettingController方法中调用this.Ok时遇到TypeError,如何解决此问题以正确使用TypeScript中的继承方法?
更新
import express, { Express, Router, NextFunction, Request, Response } from 'express';
import SettingController from '../../http/controller/SettingController';
// const setting_controller = new SettingController(new SettingService());
const settingRouter = express.Router();
// settingRouter.get('/get', settingController.getSetting);
settingRouter.put('/opt-setting', SettingController.SettingOTP);
型
1条答案
按热度按时间8ehkhllq1#
您应该只使用
export default class SettingController extends BaseController
而不是export default new class SettingController extends BaseController