#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 {}