代码之家  ›  专栏  ›  技术社区  ›  vesse

不带lambda的函数引用的TypeScript泛型绑定

  •  0
  • vesse  · 技术社区  · 7 年前

    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
    

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

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

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

    而不是

    R.pipe(
      R.map(mappingFunction),
      R.flatten<string>
    )(data)
    
    0 回复  |  直到 7 年前
    推荐文章