Как привязать контекст 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;
  }
};
→ Ссылка