Как установить тип функции в Typescript при передаче ее в другую функцию? - PullRequest
0 голосов
/ 25 сентября 2018

Вот моя функция:

const payout = (asset: ILPAsset, type: string)
    => type === 'daily' ? asset.lastPayout : asset.historical;

И где я ее использую:

@bind
private mapDailyAssets(payoutType: string, payout: payoutFunc, assets: ILPAsset[], currency: string) {
  return assets.map((asset) => (
    <div className={b('table-row')()} key={asset.symbol}>
      <div>{asset.symbol}</div>
      <div className={b('asset-value')()}>{formatMoney(payout(asset, payoutType), currency)}</div>
    </div>
  ));
}

Я получаю ошибки при попытке установить interface для типа payoutFunc:

interface payoutFunc: (asset: ILPAsset, type: string) => string;

Но также появляется эта ошибка:

вызывает выражение, тип которого не имеет подписи вызова

enter image description here

1 Ответ

0 голосов
/ 25 сентября 2018

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

interface payoutFunc { 
  (asset: ILPAsset, type: string): string;
}

Или вы можете использовать псевдоним типа :

type payoutFunc = (asset: ILPAsset, type: string) => string;

В любом случае вы можете использовать этот тип как опоруеще:

interface MyProps {
  foo: string;
  bar: number;
  payout: payoutFunc;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...