Изменить интерфейс на тип объекта - PullRequest
1 голос
/ 17 июня 2020

Приведенное ниже отлично работает, если я просто передаю реквизиты один за другим

Example: const [] = useHook(3, 500, ref);

Но я хочу изменить его на объект:

Example: const [] = useHook({spike: 0, timeout: 500});

Как бы я напишите это в моем интерфейсе и сохраните возвращаемые типы функций.

   interface IProps {
      (spike?: number, timeout?: number, ref?: any): [
        string,
        number,
        string| null,
      ];
    }

    const useHook: IProps = (
      spike= 10,
      timeout= 500,
      ref = null,
    ) => {

1 Ответ

0 голосов
/ 17 июня 2020
interface IHookArgs {
  spike?: number; 
  timeout?: number; 
  ref?: any
}

interface IProps {
      (args: IHookArgs): [
        string,
        number,
        string| null,
      ];
    }

const useHook: IProps = ({ spike = 5, timeout = 6, ref = undefined}) => {
 return ['', spike, '']
}

const [] = useHook({spike: 0, timeout: 500});

Но я предпочитаю описывать функцию с помощью type, а НЕ interface:

interface IHookArgs {
  spike?: number; 
  timeout?: number; 
  ref?: any
}

type HookType = (args: IHookArgs) => [string, number, string| null];

const useHook: HookType = ({ spike = 5, timeout = 6, ref = undefined}) => {
 return ['', spike, '']
}

const [] = useHook({spike: 0, timeout: 500});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...