javascript - typescript 继承

标签 javascript node.js express typescript

我有一些关于 typescript/javascript 继承的问题。我有以下基类(快速 Controller 路由器):

abstract class BaseCtrl {
  abstract model;

  // Get all
  getAll = (req, res) => {
    this.model.find({}, (err, docs) => {
      if (err) { return console.error(err); }
      res.json(docs);
    });
  };
export default BaseCtrl;

以及实现该基础的以下类:

import BaseCtrl from './base';
import Card from '../models/card';

export default class CardCtrl extends BaseCtrl {
  model = Card;

  getAll = (req, res) => {
    super.getAll(req, res);
  }

}

这段代码给了我错误:

Only public and protected methods of the base class are accessible via the super keyword

我想知道如何调用super方法。谁能帮我吗?

最佳答案

您需要将 getAll 定义为正确的方法:

abstract class BaseCtrl {
    abstract model;

    // Get all
    getAll(req, res) {
        this.model.find({}, (err, docs) => {
            if (err) { return console.error(err); }
            res.json(docs);
        });
    }
};
export default BaseCtrl;

然后,您可以覆盖它:

import BaseCtrl from './base';
import Card from '../models/card';

export default class CardCtrl extends BaseCtrl {
     model = Card;

     getAll(req, res) {
       super.getAll(req, res);
     }
}

关于javascript - typescript 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44852876/

相关文章:

javascript - jQuery 捕获 "RangeError: Maximum call stack size exceeded"

javascript - 尝试使用@别名时,Jest 找不到@babel/code-frame

javascript - 在没有 UIWebView 的情况下从 Xcode 执行 JS 文件

javascript - 模块中的返回值返回空?

node.js - 在 Mongoose 中按日期和时间排序?

node.js - 带有 Express 模板或纯 HTML 的 AngularJS?优点和缺点?

javascript - 比例 1 的 Velocity js

node.js - VirtualBox端口转发问题

node.js - 如何在 Node.js Express mongoose 后端的 URL 查询字符串中使用 $or 运算符

javascript - 无法读取帖子响应中的正文 [express.js]