Type '{ error: string; }' is not assignable to type 'string'

Данный код вызывает ошибку Type '{ error: string; closeCallback: () => void; }' is not assignable to type 'string'.

this.state.errorInfoForShow &&
   <StampErrorModal
       error={this.state.errorInfoForShow}
       closeCallback={this.closeErrorInfoModal}
   />

Хотя типы в функции прописаны верно

const StampErrorModal = (error: string | null, closeCallback: () => any) => {
 return(
     stampErrorModalTemplate(error, closeCallback)
 );
}
export default StampErrorModal;

Причём всё работает, если изменить

 <StampErrorModal
     error={this.state.errorInfoForShow}
     closeCallback={this.closeErrorInfoModal}
 />

на

StampErrorModal(this.state.errorInfoForShow, this.closeErrorInfoModal)

Но мне необходимо не трогать модуль, в котором вызывается код, а изменять только функцию StampErrorModal


Ответы (1 шт):

Автор решения: Genrih Fetischev

В функциональный реакт компонет пропсы попадают не как список аргументов, а как поля в объекте с пропсами, т.е. когда ты передаешь в компонент пропсы:

 <StampErrorModal
     error={this.state.errorInfoForShow}
     closeCallback={this.closeErrorInfoModal}
 />

то в функции StampErrorModal ты получишь один аргумент props (объект) с полями error и closeCallback

попробуй сделать так:

type Props = {
    error: string | null,
    closeCallback: () => any
}

const StampErrorModal = ({error, closeCallback}: Props ) => {
→ Ссылка