У меня есть приложение React с функциональным компонентом, в котором я использую небольшую анимацию GSAP.
Сегодня я попытался перенести приложение из vanilla JS в TypeScript, и я начал с этого маленького компонента:
interface Props {}
const Item1Content: React.FC<Props> = ({}) => {
let centerLabel = useRef(null);
const timeLine = useRef<TimelineLite | null>(null);
useEffect(() => {
timeLine.current = new TimelineLite({ paused: true });
timeLine.current.to(centerLabel, 0.5, { opacity: 0.1 });
}, []);
return (
<>
<CarouselItemWrapper
backgroundImage={background}
backgroundImageVerticalPosition={"bottom"}
>
<CenterLabel ref={centerLabel}>blupp blupp</CenterLabel>
</CarouselItemWrapper>
</>
);
};
export default Item1Content;
Код отлично работает как файл. js (имеется фактически это второй useEffect, который воспроизводит анимацию. Я удалил его для поиска ошибок), но когда я включаю его в .tsx, в браузере появляется следующая ошибка:
TypeError: can't define property "_gsap": Object is not extensible
причина в том, что строка:
timeLine.current.to(centerLabel, 0.5, { opacity: 0.1 })
Так я правильно понял? TimeLineLite-Object, на который ссылается timeLine.current, не может получить добавление новых свойств, что пытается сделать проблемная строка? Ошибка всегда была там, но javascript просто все равно, и добавили свойство в любом случае, но машинопись настолько строга, что она говорит мне: «Ни за что, правильно!»? Но как я могу сделать это правильно?
Спасибо