typescript v 2.1.0
我写了以下ServerRouter.ts

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

export class ServerRouter {
  router: Router;

  /**
   * Initialize the ServerRouter
   */
  constructor() {
    this.router = Router();
    this.init();
  }

  /**
   * GET index page
   */
  public  getIndex(req: Request, res: Response, next: NextFunction) {
    res.render('index');
  }

  /**
   * Take each handler, and attach to one of the Express.Router's
   * endpoints.
   */
  init() {
    this.router.get('/', this.getIndex);
  }

}

// Create the ServerRouter, and export its configured Express.Router
const serverRouter = new ServerRouter().router;
export default serverRouter;
Webstorm检查警告
>方法可以是静态的
关于getIndex()函数引发:

如果我将其更改为静态

,我收到一个错误:类型'ServerRouter'上不存在TS2339'getIndex'
我应该改变什么?
感谢您的反馈

最佳答案

静态方法存在于类而不是对象实例上。您必须在this.getIndex函数中将ServerRouter.getIndex更改为init

WebStorm建议将方法保持不变,如果它们不涉及实例的任何状态,因为它建议该方法存在于该类的所有实例通用的级别上。

您可以在TypeScript Handbook中找到有关static的更多信息(请参见“静态属性”部分)。

08-04 17:44