打字稿:方法可以是静态的

时间:2017-03-27 16:44:41

标签: typescript static

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()函数引发了

BUT

如果我将其更改为静态

  

public static getIndex()

,我收到错误:'ServerRouter'类型上不存在TS2339'getIndex'

我应该改变什么?

感谢您的反馈

1 个答案:

答案 0 :(得分:29)

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

WebStorm建议如果方法不触及实例的任何状态,则使方法保持静态,因为它表明该方法存在于该类的所有实例的通用级别。 / p>

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