Реактивная поза: Как определить типы реквизита в реактивной позе? (реквизит неявно имеет любой тип)

Я использую TypeScript с реактивной позой и мне нужно определить типографию для реквизита. Это приложение, с которого я только что начал create-react-app версия 3.0.1.

Я получаю ошибку Parameter 'props' implicitly has an 'any' type.

Я попытался определить тип на div, похожий на styled-components:

const FadeIn = posed.div<{ duration: number; hiddenOffset: number }>({
  visible: {
    opacity: 1,
    scale: 1,
    x: 0,
    y: 0,
    transition: { duration: props => props.duration }
  },
  hidden: {
    opacity: 0,
    scale: 0.8,
    x: props => props.hiddenOffset,
    y: 10
  }
});

Я также попытался определить компонент для использования вместо posed.div:

const FadeInContainer: React.FC<{
  duration: number;
  hiddenOffset: number;
}> = props => {
  return <div {...props} />;
};

и передавая это:

const FadeIn = posed(FadeInContainer)({
  visible: {
    opacity: 1,
    scale: 1,
    x: 0,
    y: 0,
    transition: { duration: props => props.duration }
  },
  hidden: {
    opacity: 0,
    scale: 0.8,
    x: props => props.hiddenOffset,
    y: 10
  }
});

Что мне здесь не хватает?

1 ответ

Решение

Определение интерфейса для props и аннотирование аргумента функции, кажется, работает.

interface Props {
  duration: number;
  hiddenOffset: number;
}

const FadeIn = posed.div({
  visible: {
    opacity: 1,
    scale: 1,
    x: 0,
    y: 0,
    transition: (props: Props) => ({ duration: props.duration })
  },
  hidden: {
    opacity: 0,
    scale: 0.8,
    x: (props: Props) => props.hiddenOffset,
    y: 10
  }
});
Другие вопросы по тегам