使用fp-ts的pipe函数时遇到TypeScript类型错误TS2322的排查与修复求助
使用fp-ts的pipe函数时遇到TypeScript类型错误TS2322的排查与修复求助
大家好,我最近在用fp-ts函数式编程库写代码,一直收到下面这个TypeScript类型错误,实在摸不着头脑,想请教一下大家:
TS2322: Type unknown is not assignable to type TaskEither<ErrorBase, unknown>
TaskEither.d.ts(1340, 42): The expected type comes from the return type of this signature.
我有两个疑问:
- 这个错误到底在提示什么问题?我完全没理解它指向的核心问题点
- 我该怎么修改代码来修复这个错误?
麻烦大家帮忙看看,万分感谢!
我已经定位到错误来自代码里的高亮部分(下面用标注的代码块):
const findByUserAndGroup = groupMemberRepository.findByUserAndGroup(cancelGroupMembershipDTO.groupId); pipe( sequenceS(ApplyPar)({ user: findByUserAndGroup(cancelGroupMembershipDTO.userId), userToCancel: findByUserAndGroup(cancelGroupMembershipDTO.userToCancelId) }), chain(({ user, userToCancel }) => **pipe( user, isGroupOwner, fromEither, map(() => userToCancel) )** ), map((userToCancel) => ({ groupMemberId: userToCancel.groupMemberId, groupId: userToCancel.groupId, userId: userToCancel.userId, isGroupOwner: userToCancel.isGroupOwner })), chain((processedDetails) => userRepo.delete(processedDetails)) )
下面是相关函数的实现代码,供大家参考:
findByUserAndGroup 函数
const findByUserAndGroup = (groupMemberId: string) => (userId: string): TaskEither<ErrorBase, Option<GroupMember>> => { return pipe( tryCatch( () => pool.query( `select * from groupMember where groupMemberId = ${groupMemberId} and userId = ${userId} ` ), (error: any) => ({message: `Database error: ${String(error)}`, name: 'SystemError', details: 'Database Error.', innerError: error}) ), chain(result => right(none)) ); }
isGroupOwner 验证函数
export const isGroupOwner = (groupMember: GroupMember): TaskEither<ErrorBase, GroupMember> => { if (!groupMember.isGroupOwner) { return left({message: `You do not have the permissions necessary to perform this operation.`}); } return right(groupMember); }
备注:内容来源于stack exchange,提问作者user1790300
相关产品推荐
相关产品推荐

