我对 FP-TS(或一般的函数式编程)还不是很满意,所以我可能在这里做错了一些事情。
我有以下函数,我想返回 aTaskEither<Errors, Job>
但我似乎无法让它工作。
这个返回Promise<Either<Errors, Job>>
export function storeJob(job: CreateJob): TaskEither<Errors, Job> {
const dto = toCreateDto(job)
const insertQuery = createInsertQuery('jobs')(dto)
return pipe(
insertQuery, // string
query, // TaskEither<Error, unknown>
fromEither(fromDto(dto) // Either<Errors, Job> ) // TaskEither<Errors, Job>
) // Promise<Either<Errors, Job>>
}
再次尝试(仅更改了最后一个管道,添加map
)我确实返回TaskEither<Error, TaskEither<Errors, Job>>
export function storeJob(job: CreateJob): TaskEither<Errors, Job> {
const dto = toCreateDto(job)
const insertQuery = createInsertQuery('jobs')(dto)
return pipe(
insertQuery, // string
query, // TaskEither<Error, unknown>
map(() => fromEither(fromDto(dto) // Either<Errors, Job> ))
) // TaskEither<Error, TaskEither<Errors, Job>>
}
对于之后的第二个,flatten
在地图之后添加一个似乎也不起作用。