Связывание обобщений TypeScript для ссылки на функцию без лямбды - PullRequest
0 голосов
/ 08 января 2019

Возможно ли связать универсальный аргумент в справочнике по функции TypeScript?

Например, у меня есть промежуточное ПО Koa с определением:

const genericsMiddleware: <T extends MyType>(ctx: MyRouterContext<T>) => Promise<any> = 
  <T extends MyType>(ctx: MyRouterContext<T>) => 
    Promise.resolve(ctx.body.value);

router.post('/api/endpoint', 
  someOtherMiddleware,
  genericsMiddleware); // How to bind to certain type?

router.post('/api/endpoint', 
  someOtherMiddleware,
  (ctx) => genericsMiddleware<TypeDef>(ctx)); // This works but lambda is useless

Теперь я использую лямбду, чтобы обернуть вызов функции в genericsMiddleware, но это только из-за того, что я не понял, возможно ли связать типовой тип в ссылке на функцию.

Я тоже очень часто использую Ramda и сталкиваюсь с той же проблемой, например, с. R.flatten так как мне нужно обернуть его лямбдой, чтобы правильно связать типы, например.

R.pipe(
  R.map(mappingFunction)
  (list) => R.flatten<string>(list)
)(data)

вместо

R.pipe(
  R.map(mappingFunction),
  R.flatten<string>
)(data)
...