Как привязать контекст this в TypeScript
TypeScript ругается на метод isReviewLongEnough, не нравится ему this. Ниже два варианта одного и того же метода со стрелочной функцией и с декларативной функцией.
Стрелочная функция:
const [formState, setFormState] = useState({
rating: 0,
review: '',
isReviewLongEnough: (): boolean => {
const reviewLength = this.review.trim().length;
return reviewLength >= MIN_REVIEW_SIMBOLS && reviewLength <= MAX_REVIEW_SIMBOLS;
}
});
Обычная функция:
const [formState, setFormState] = useState({
rating: 0,
review: '',
isReviewLongEnough(): boolean {
const reviewLength = this.review.trim().length;
return reviewLength >= MIN_REVIEW_SIMBOLS && reviewLength <= MAX_REVIEW_SIMBOLS;
}
});
Я так понял что проблема в том что у this - тип any. Т.к. я только первую неделю изучаю тупСкрип и реакт, я не могу даже понять какой использовать синтаксис, чтобы правильно обозначить тип у this
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Я не могу себе представить причину зачем бы в state класть функцию.
Так что нужно просто вытащить её из state и вообще не заморачиваться с this.
const [formState, setFormState] = useState({
rating: 0,
review: ''
});
const isReviewLongEnough: (): boolean => {
const reviewLength = formState.review.trim().length;
return reviewLength >= MIN_REVIEW_SIMBOLS && reviewLength <= MAX_REVIEW_SIMBOLS;
}
};