Typcript: метод может быть статическим
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'
Что я должен изменить?
спасибо за отзыв
Ответы
Ответ 1
Статический метод существует для класса, а не для экземпляра объекта. Вам нужно будет изменить this.getIndex
на ServerRouter.getIndex
в вашей функции init
.
WebStorm предлагает сделать статические методы, если они не касаются какого-либо состояния экземпляра, поскольку он предполагает, что метод существует на уровне, который является общим для всех экземпляров этого класса.
Вы можете узнать больше о static
в Справочнике по TypeScript (см. Раздел "Статические свойства").