是否可以在 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)