реквизит имеет тип любого машинописного текста react?

#reactjs #typescript

Вопрос:

Я пытаюсь описать входящие реквизиты для дочернего элемента, и я получаю следующую ошибку

Параметр «реквизит» неявно имеет тип «любой». ts(7006) (параметр) реквизит: любой

 // Parent Element  lt;GeneralButton icon={lt;TodayIcon /gt;} type='button' onClick={add} text={'add'} /gt;  // Child element  import React from 'react'; // MUI ****************************************************// import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; import { Button, Box } from '@material-ui/core'; import { SvgIconProps } from '@material-ui/core/SvgIcon';  const useStyles = makeStyles((theme: Theme) =gt;  createStyles({  root: {  'amp; gt; *': {  margin: theme.spacing(1),  },  },  }) );  interface generalBtnPrpos {  form?: string;  disabled?: boolean;  icon?: React.ReactElementlt;SvgIconPropsgt;;  type: string;  onClick: () =gt; void;  text: string; }  export default function GeneralButtonlt;generalBtnPrposgt;(props) {  const classes = useStyles();   return (  lt;Box className={classes.root}gt;  lt;Button form={props.form} disabled={props.disabled} type={props.type} onClick={props.onClick} startIcon={props.icon} variant='contained' color='primary'gt;  {props.text}  lt;/Buttongt;  lt;/Boxgt;  ); } 

Ответ №1:

вы должны ввести в свой параметр props код примерно так

 interface generalBtnPrpos {  form?: string;  disabled?: boolean;  icon?: React.ReactElementlt;SvgIconPropsgt;;  type: string;  onClick: () =gt; void;  text: string; }  export default function GeneralButtonlt;generalBtnPrposgt;(props: generalBtnPrpos) { .....  

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

1. любая идея, почему я получаю это сейчас, свойство «форма» не существует для типа «Реквизит».

2. Я передаю все так, как должен, теперь это говорит мне, что таких реквизитов нет, я хочу, чтобы некоторые реквизиты были необязательными в зависимости от каждого случая, так как я хочу использовать это в качестве общего btn

3. Проверьте мой ответ, это неправильный ответ. Вы также должны удалить определение универсального типа lt;generalBtnPrposgt; .

Ответ №2:

На самом деле вы никогда не вводите реквизиты в свой GeneralButton компонент. Вы создаете универсальный вызываемый generalBtnPrpos вместо использования созданного вами интерфейса, который называется generalBtnPrpos .

Чтобы правильно ввести реквизит, вы можете добавить generalBtnPrpos интерфейс после реквизита и удалить lt;generalBtnPrposgt; созданный вами шаблон, так как вы его не используете:

 export default function GeneralButton(props: generalBtnPrpos) {  const classes = useStyles();   return (  lt;Box className={classes.root}gt;  lt;Button form={props.form} disabled={props.disabled} type={props.type} onClick={props.onClick} startIcon={props.icon} variant='contained' color='primary'gt;  {props.text}  lt;/Buttongt;  lt;/Boxgt;  ); }