typescript - Làm thế nào để biến một TaskOption thành TaskEither sử dụng fp-ts?
Tôi có một hàm có thể được sử dụng để tìm một đối tượng trong cơ sở dữ liệu và trả về một TaskOption:
find: (key: SchemaInfo) => TO.TaskOption<Schema>
và một cái khác để lưu nó:
register: (schema: Schema) => TE.TaskEither<Error, void>
Trong triển khai register của tôi, tôi muốn kiểm tra xem Schema mà tôi đang cố lưu có tồn tại hay không (tôi muốn sử dụng find), nhưng tôi không biết cách chuyển một TaskOption thành TaskEither. Tôi đã thử làm như sau:
pipe(
findSchema(schema.info),
TE.fromTaskOption,
TE.swap
)
nhưng TE.fromTaskOption không trả về TaskEither mà tôi mong đợi. Tôi cũng đã thử TE.fromTaskOptionK nhưng nó cũng không hoạt động, nó trả về một hàm có hình dạng lạ.
Trường hợp sử dụng của tôi là khi TaskOption là none tôi sẽ thử lưu (điều này có nghĩa là sơ đồ chưa được đăng ký) còn không thì tôi trả về lỗi (sơ đồ đã được đăng ký). Tôi có thể giải quyết điều này như thế nào?
Câu trả lời #1
TE.fromTaskOption yêu cầu một giá trị để đưa vào Left, khi TO là None
Thử cái này:
pipe(
findSchema(schema.info),
TE.fromTaskOption(() => "No schema"),
TE.swap
)
