#node.js #typescript #this
Вопрос:
Я пытаюсь понять, почему «это» иногда может быть неопределенным в классах, и как это исправить:
import { UserDatabase } from './user.database';
export class UserService {
private userDatabase = new UserDatabase();
async login (request: Request, response: Response) {
let {email, password} = request.body;
const user = await this.userDatabase.login(email, password);
...
Журнал ошибок:
(node:3254) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'userDatabase' of undefined
Ответ №1:
Обычная проблема с тем this
.
Вы можете привязать метод к контексту класса:
export class UserService {
constructor () {
this.login = this.login.bind(this);
}
...
}
Подробнее читайте здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind