TypeScript React Js, тип 'void' нельзя назначить типу '((событие: MouseEvent ) => void) | не определено» - PullRequest
0 голосов
/ 01 мая 2020

У меня есть эти функции и эти типы:

type ClickHandler = (tag: ITag) => void;

type ShowHideDropItem = (tag: ITag) => void;

my tsx:

  const [menuItems, setMenuItems] = useState<ITag[]>(SideBarTags);

  const clickHandler: ClickHandler = (tag) => () => {
    showHideDropItem(tag);
  };

  const showHideDropItem: ShowHideDropItem = (tag) => {
    setMenuItems((items) =>
      items.map((item) => ({
        ...item,
        Active:
          item.Name === tag.Name ? (tag.Active === true ? false : true) : false,
      }))
    );
  };

но я получил эту ошибку на моем onClick:

Тип 'void' не может быть назначен типу '( (event: MouseEvent) => void) | не определено. TS2322

1 Ответ

1 голос
/ 01 мая 2020

clickHandler - это функция curry (функция, которая возвращает функцию). Попробуйте включить его в свой тип:

type ClickHandler = (tag: ITag) => (e: React.MouseEvent) => void;

Примечание : необходимость аргумента e (event) зависит от того, хотите ли вы использовать его в своей функции.

Редактировать : Ваша функция будет выглядеть так:

const clickHandler: ClickHandler = (tag) => (e) => {
   e.preventDefault();
   showHideDropItem(tag);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...