我有一个函数,可用于在数据库中查找对象并返回一个 TaskOption
:
find: (key: SchemaInfo) => TO.TaskOption<Schema>
还有另一个保存它的:
register: (schema: Schema) => TE.TaskEither<Error, void>
在我的 register
实现中,我想检查我尝试保存的 Schema
是否存在(我想使用 find
),但我不知道如何将 TaskOption
映射到 TaskEither
。我尝试这样做:
pipe(
findSchema(schema.info),
TE.fromTaskOption,
TE.swap
)
但是 TE.fromTaskOption
没有返回我期望的 TaskEither
。我也尝试过 TE.fromTaskOptionK ,但它也不起作用,它返回一个奇怪的形状函数。
我的用例是,如果 TaskOption
为 none
我尝试保存(这意味着架构尚未注册),否则我返回错误(架构已经注册)。我该如何解决这个问题?
最佳答案
当 TO 为 None
TE.fromTaskOption
需要将一个值放入 Left
中
试试这个:
pipe(
findSchema(schema.info),
TE.fromTaskOption(() => "No schema"),
TE.swap
)
关于typescript - 如何使用 fp-ts 将 TaskOption 转换为 TaskEither?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69637285/