Свойство ‘PropTypes’ не существует для типа ‘typeof TextInput’

#javascript #reactjs #typescript #react-native

#javascript #reactjs #typescript #react-native

Вопрос:

Я впервые создаю реагирующий компонент, используя Typescript. И я получаю следующую ошибку в строке 51: Property 'propTypes' does not exist on type 'typeof TextInput

Подобные темы мне не помогли. У кого-нибудь есть идея? Спасибо

 import React from "react";
import { View, TextInput, StyleSheet, Text } from "react-native";
import PropTypes from "prop-types";

export type InputProps = {
    label: any;
    inputStyle: any;
    containerStyle: any;
    touched: any;
    error: any;
};

const Input = ({
  label,
  inputStyle,
  containerStyle,
  touched,
  error,
  ...props
}: Partial <InputProps>) => {
  return (
    <View style={containerStyle}>
      <Text>{label}</Text>
      <TextInput style={inputStyle} {...props} />
      <Text style={styles.errorInput}>{touched amp;amp; error}</Text>
    </View>
  );
};

const styles = StyleSheet.create({
  containerStyle: {
    marginVertical: 5,
  },
  input: {
    borderBottomWidth: 1,
    minHeight: 40,
    padding: 10,
  },
  errorInput: { color: "red", fontSize: 12 },
});


const stylePropsType = PropTypes.oneOfType([
  PropTypes.arrayOf(PropTypes.object),
  PropTypes.object,
]);

Input.propTypes = {
  inputStyle: stylePropsType,
  containerStyle: stylePropsType,
  ...TextInput.propTypes, // I have an error: "Property 'propTypes' does not exist on type 'typeof TextInput'.ts(2339)"
};

Input.defaultProps = {
  inputStyle: styles.input,
  containerStyle: styles.containerStyle,
  touched: false,
  error: null,
};

export default Input;  

Ответ №1:

ОТРЕДАКТИРОВАНО: попробуйте явно задать тип компонента:

 const Input: React.FC<Partial <InputProps>> = ({
  label,
  inputStyle,
  containerStyle,
  touched,
  error,
  ...props
}) => {...
  

Комментарии:

1. Спасибо за ваш ответ! Но проблема сохраняется: (

2. @rkhan возможно, вам не нужно, чтобы PropTypes распространялись там? В конце концов, PropTypes в TextInput выдаст ошибку, когда получит неверный тип prop. Если вы беспокоитесь о том, что intellisense не показывает эти реквизиты, вы просто можете расширить реквизиты TextInputs (псевдокод) export type Props extends TextInputProps {}