我有以下内容:
export const ObjC = Codec.struct({
name: Codec.string,
value: Codec.number,
})
export type ObjType = Codec.TypeOf<typeof ObjC>
我想要一个函数来解码这个对象并返回一个错误(不是DecoderError)。类似于:
import { fold } from 'fp-ts/lib/Either'
import { pipe } from 'fp-ts/lib/function'
const decodeObj = async (str: string): Promise<Either<Error, ObjType>> => {
return pipe(
ObjC.decode(str),
fold(err => toError(err), m => m), // This doesn't do want I want
)
}
我怎样才能用惯用的方法为这个函数返回正确的类型呢?
1条答案
按热度按时间xxls0lw81#
从你列出的返回类型开始,听起来你想在
Left
时转换到左边的值,而在Right
时保持代码不变,在这种情况下,mapLeft
帮助函数正是你要找的。这可以通过以下方式实现:
然而,我有一些问题。首先,编写的代码永远不会成功解析,因为输入字符串永远不会匹配对象。我猜还有其他的逻辑你已经忽略了,但就目前的代码看起来有点错误。