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」に存在しません
何を変更すればよいですか?
フィードバックありがとう
静的メソッドは、オブジェクトインスタンスではなくclassに存在します。 init
関数でthis.getIndex
をServerRouter.getIndex
に変更する必要があります。
WebStormは、インスタンスの状態に触れない場合、メソッドを静的にすることを推奨します。メソッドがそのクラスのallインスタンスに一般的なレベルで存在することを示唆しているためです。
static
の詳細については、 TypeScriptハンドブック で確認できます(「静的プロパティ」セクションを参照)。