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)