Свойство 'label' отсутствует в типе '{handleClick: () => void; } 'но требуется в типе' {handleClick: () => void; метка: строка; }» - PullRequest
0 голосов
/ 19 марта 2020

У меня проблемы при описании типов моих реквизитов. Я получаю сообщение об ошибке в следующих строках кода:

 <PostButton handleClick={props.upvote}/>
  <PostButton2 handleClick={props.downvote}/>

Ошибка:

Свойство 'label' отсутствует в типе '{handleClick: () => аннулированию; } 'но требуется в типе' {handleClick: () => void; метка: строка; } '. ts (2741) Comments.tsx (62, 55): здесь объявлено' label '.

Когда я пытаюсь удалить' label: string; 'из моего подпункта функции выдается сообщение об ошибке:

Свойство' label 'не существует для типа' {handleClick: () => void; } '.

Вот мой код:

function Button(props: { handleClick: () => void;  }) {

    let style = {
        paddingRight: 100,

    };
    return (
        <div>
            <button style={style} onClick={() => props.handleClick()}>
                {props.label}

                    PostButton
            </button>
        </div>
    );
}

Ответы [ 2 ]

1 голос
/ 19 марта 2020

в функции PostButton вы пытаетесь напечатать {props.label}, которого нет в подпорках, попробуйте удалить props: { handleClick: () => void; } и go с помощью function PostButton(). Я вижу слишком много обработчиков, которым назначено ничего не делать, почему бы не удалить их и не очистить код.

Лучшее решение: Если вы хотите продолжать использовать {props.label}, тогда просто добавьте его при вызове функции следующим образом: <PostButton handleClick={props.upvote} label="this is a label, it can be left blank"/>

0 голосов
/ 19 марта 2020

Оба ваших PostButton используют {props.label} в return, поэтому вы должны передать метку как реквизит

function PostButton(props: { handleClick: () => void; title: string  }) {....}

<PostButton handleClick={props.upvote} title="titlePostButton"/>

<PostButton2 handleClick={props.downvote} title="titlePostButton2"/>
...