Определите тип свойства для любого Typeскрипта Function React - PullRequest
0 голосов
/ 14 июля 2020

Я привязываю к типу свойств компонента, где func может быть любой функцией, переданной от его родителя

interface TProps {
    func?: Function
    children?: ReactNode
}

Компонент:

return (
    <button
        onClick={props.func}
    >
        {props.children}
    </button>
)

Но я получаю следующую ошибку:

Аргумент типа «Функция | undefined 'не может быть назначен параметру типа' ((value: void) => void | PromiseLike) | null | undefined '.

Какой тип я должен использовать, чтобы определить, что func равно любой функции?

Ответы [ 3 ]

2 голосов
/ 14 июля 2020

Обычно (не обязательно React) вы можете express тип для любой функции, например

fn: (...args: any[]) => any
1 голос
/ 14 июля 2020

измените свой интерфейс:

interface TProps {
    func?: () => void, // now in () you can pass any argument type, also in place of void, you can define any return type
    children?: ReactNode
}
0 голосов
/ 14 июля 2020

Вы назначаете путь, который не рекомендуется. измените свой интерфейс, чтобы определить его следующими способами

    /** any function as long as you don't invoke it (not recommended) */
      onSomething: Function;
     /** function that doesn't take or return anything (VERY COMMON) */
      onClick: () => void;
     /** function with named prop (VERY COMMON) */
      onChange: (id: number) => void;
    /** alternative function type syntax that takes an event (VERY COMMON) */
       onClick(event: React.MouseEvent<HTMLButtonElement>): void;

Вы можете сослаться на это

https://github.com/typescript-cheatsheets/react-typescript-cheatsheet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...