node.js - chyba typu pre TypeScript fp-ts kód pri používaní funkcie pipe


Snažím sa písať kód pomocou knižnice funkcionálneho programovania fp-ts a neustále dostávam nasledujúcu chybu typu:

TS2322: Typ unknown sa nedá priradiť k typu TaskEither<ErrorBase, unknown> TaskEither. d. ts(1340, 42): Očakávaný typ pochádza z návratového typu tohto podpisu.

  1. Aký je problém, pretože si nie som istý, čo mi chyba hovorí, že je problém?

  2. Ako opravím túto chybu?

Každá pomoc by bola veľmi ocenená.

Zvýraznená časť kódu nižšie sa zdá byť zdrojom chyby:

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))
)

nájsťPodľaPoužívateľaAProduktu:

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))
    );
}

Funkcia overenia 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);
}

Súvisiace články