fp-ts如何根据选项选择结果



我试图根据Option是Some还是None在两个可能的字符串之间进行选择。当选项为"某些"时,一切运行正常,但当选项为无时,我会出现一个奇怪的错误。

import { option } from "fp-ts";
import { pipe } from "fp-ts/function";
pipe(
option.none, // with option.some("defaultId") works smoothly
option.foldW(
() => {
return "default string";
},
(id) => {
return this.findStringById(id);
},
),
...

所述错误:

{ message: "Cannot read properties of undefined (reading '_tag')" }

我也尝试过option.matchWboolean.foldW,但第一个有同样的问题,第二个不允许我访问Some的内部

提前感谢!

以下示例应该有效。我使用fp ts 2.11.8。实际上,我认为这里的问题可能在其他地方,与选项用法无关。在调用pipe之后,您是否试图将此值提升到另一个ADT中?

import { pipe } from 'fp-ts/lib/function';
import * as O from 'fp-ts/lib/Option';
import { option } from 'fp-ts';
// mocked function
const findStringById = id => `finding ${id}`;
pipe(
O.none,
O.foldW(
() => 'default return value',
(id) => findStringById(id),
)
); // -> 'default return value'
pipe(
option.none,
option.foldW(
() => 'default return value',
(id) => findStringById(id),
)
); // -> 'default return value'
pipe(
O.some('1234'),
O.foldW(
() => 'default return value',
(id) => findStringById(id),
)
); // -> 'finding 1234'

最新更新