Комментарии 6
с использованием Flow описывать HOC'и можно легко с помощью такого сниппета:
к сожалению авторство данного сниппета потерял
type ComponentWithDefaultProps<DefaultProps, Props> = React.ComponentType<Props> & {
defaultProps: DefaultProps,
};
export type HOC<ProvidedProps, RequiredProps> = (<Props, DefaultProps>(
component: ComponentWithDefaultProps<DefaultProps, ProvidedProps & Props>,
) => React.ComponentType<RequiredProps &
// Props, with diffed-out default props. Make sure to merge with ProvidedProps to work with
// $Diff constraints in nested HoCs.
$Diff<ProvidedProps & Props, DefaultProps & ProvidedProps> &
// Force props to be in the shape of all potential props (effectively allows properly-typed
// overrides of DefaultProps)
$Shape<RequiredProps & DefaultProps & Props>,>) &
(<Props>(
component: React.StatelessFunctionalComponent<ProvidedProps & Props>,
) => React.ComponentType<RequiredProps & Props>) &
(<Props>(
component: React.ComponentType<ProvidedProps & Props>,
) => React.ComponentType<RequiredProps & Props>);
к сожалению авторство данного сниппета потерял
0
Зачем так много букв? Посмотрите HOC<> в flow-тайпингах recompose. Если не хочется тащить все тайпинги, то эти три declare прекрасно будут работать отдельно (как мы и сделали).
0
Ответ лежит в учете defaultProps в этих буквах
0
А что насчет hoist-non-react-statics, как советуют в официальной документации к React?
0
Действительно, в рамках этой статьи не было рассмотрено копирование статических свойств в HoC, можем рассказать об этом в одной из следующих публикаций.
+1
Особая боль возникает когда от использования «старых» вариантов TS, когда заместо простого `connect` пишут `connect<StateProps, ComponentMappedProps, PublicComponentProps>`, при том что часть PublicComponentProps могут быть перекрыты ComponentMappedProps.
«Такой» TypeScript сеет панику и ошибки в в рядах падаванов.
Так и тут —
Да, всегда можно сказать — это чтобы перепроверить входящие значения, но имхо, лучше доверится типам.
«Такой» TypeScript сеет панику и ошибки в в рядах падаванов.
Так и тут —
withOnChangeString<InputProps>(SimpleInput)
— «без проблем» может узнать тип события из переданного компонента.Да, всегда можно сказать — это чтобы перепроверить входящие значения, но имхо, лучше доверится типам.
0
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Информация
- Дата основания
- Местоположение
- Россия
- Сайт
- www.sber.ru
- Численность
- свыше 10 000 человек
- Дата регистрации
Блог на Хабре
Всё, что нам нужно — это генерация
5.7K 78Process Mining как эволюция «научного управления» — и наша открытая библиотека для анализа
3.2K 2Agile в Сбере: как понять, что происходит?
6.4K 11Обучение робототехнике: что сейчас важно и почему это вошло в программу «Школы 21»
3.4K 5Да, мы поменяли UX банкоматов Сбера (новые устройства и новые интерфейсы)
23.6K 175
React HoC в TypeScript. Типизация без боли