You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:14:30