小编ves*_*sse的帖子

TypeScript 泛型绑定用于无需 lambda 的函数引用

是否可以在 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
Run Code Online (Sandbox Code Playgroud)

现在我使用 lambda 将函数调用包装到genericsMiddleware,但这只是因为我还没有弄清楚是否可以在函数引用中绑定泛型类型。

我也经常使用 Ramda,并且在使用例如时也面临同样的问题。R.flatten因为我需要用 lambda 包装它以正确绑定类型,例如。

R.pipe(
  R.map(mappingFunction)
  (list) => R.flatten<string>(list)
)(data)
Run Code Online (Sandbox Code Playgroud)

代替

R.pipe(
  R.map(mappingFunction),
  R.flatten<string>
)(data)
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics

5
推荐指数
1
解决办法
224
查看次数

标签 统计

typescript ×1

typescript-generics ×1