web-dev-qa-db-ja.com

Typescript:メソッドは静的にすることができます

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()関数について発生します:

しかし

静的に変更した場合

public static getIndex()

、エラーが表示されます:TS2339「getIndex」はタイプ「ServerRouter」に存在しません

何を変更すればよいですか?

フィードバックありがとう

22
user762579

静的メソッドは、オブジェクトインスタンスではなくclassに存在します。 init関数でthis.getIndexServerRouter.getIndexに変更する必要があります。

WebStormは、インスタンスの状態に触れない場合、メソッドを静的にすることを推奨します。メソッドがそのクラスのallインスタンスに一般的なレベルで存在することを示唆しているためです。

staticの詳細については、 TypeScriptハンドブック で確認できます(「静的プロパティ」セクションを参照)。

31
Ben Elliott