问题标签 [fp-ts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
305 浏览

typescript - 在 fp-ts 中将 union 类型转换为 Either 类型

在打字稿中,如何将联合类型A|B转换为fp-tsEither<A,B>感觉很自然,必须有一种很好的方法。

0 投票
1 回答
149 浏览

typescript - 如何从 ReaderEither[] 到 ReaderEither在 fp-ts 中?

在 fp-ts 中,我如何从ReaderEither<R, E, A>[]ReaderEither<R, E[], A[]>?本质上,我想将实例数组转换为ReaderEither单个ReaderEither实例。

我试过寻找答案,但运气不佳。我是函数式编程和 fp-ts 的新手,所以我仍在尝试围绕所有概念并将它们付诸实践。我感谢您的帮助。

0 投票
6 回答
1364 浏览

typescript - typescript 可区分联合的 switch 语句的替代方法

我创建了这个游乐场,代码如下:

BundlerState 是一个有区别的联合,开关缩小了类型。

问题是它不能扩展,而且大的扩展 switch 语句非常可怕。

有没有更好的方法可以写这个并且仍然保持漂亮的类型缩小?

你不能做这个:

因为类型没有缩小。

0 投票
2 回答
480 浏览

typescript - 使用 io-ts 进行配置验证

我刚刚开始在一个新项目中使用 io-ts 而不是 runtypes。我用于配置验证的模式是使用配置的每个部分的类型创建一个对象;

以及另一个具有应满足该类型的值的对象;

然后我创建一个函数,该函数接受一个键并返回该键下经过验证的配置片段;

这在运行类型中运行良好(尽管看起来有点不同)。但是,在 io-ts 中,configTypeMap[key].decode推断为;

它丢失了有关从哪个键访问解码功能的所有上下文。我可以result转换回正确的类型Either<t.errors, Config[T]>,但我想要一种方法来做到这一点,而无需转换来验证我不只是忽略错误。

编辑:

在操场上玩耍,我设法得到了一个不涉及 io-ts 的复制示例,所以我认为这只是我对打字稿推理的理解的问题。我仍然想找到一种方法来结束具有签名的函数<T extends keyof Config>(key: T): Config[T]

0 投票
1 回答
89 浏览

typescript - 类型预测仅适用于管道函数

我在我的项目中使用 monocle-ts ( https://github.com/gcanti/monocle-ts ) 库。我有以下代码

^ 这段代码工作得很好,类型系统不允许我传递不是“a”或“b”的字符串。但是,如果我尝试以其他方式编写相同的代码:

我收到一个错误:函数的Argument of type 'string' is not assignable to parameter of type 'never' 类型定义prop如下所示:

我猜测通过使用管道式打字稿能够以某种方式推断出所有通用参数,而常规prop(...)(...)调用并非如此

0 投票
1 回答
613 浏览

typescript - Typescript: How to kleisli compose (monadic compose) Promise monad using fp-ts

如何组合两个 kleisli 箭头(函数)并f:A -> Promise B使用fp -tsg: B -> Promise Ch:A -> Promise C

我对 Haskell 很熟悉,所以我会这样问:>=>(fish operator) 的等价物是什么?

0 投票
2 回答
900 浏览

typescript - 如何避免 fp-ts 中带有链的厄运金字塔?

我经常遇到这种情况,需要完成几个顺序操作。如果每个操作都专门使用上一步中的数据,那么我可以很高兴地做类似pipe(startingData, TE.chain(op1), TE.chain(op2), TE.chain(op3), ...). op2当还需要来自 的数据时,我找不到一个很好的方法来编写这个startingData,没有一堆嵌套回调。

在下面的示例中,如何避免厄运金字塔?

0 投票
1 回答
300 浏览

typescript - io-ts 的字段名称/密钥验证?

如何确保传入的 JSON 密钥有效?我使用 t.decode,它没有抛出错误。

传入的 JSON 有一个图像字段,但它的名称为 imageee。io-ts 不会抛出错误。如何确保可选检查?

0 投票
1 回答
120 浏览

typescript - 从对象中获取可选的通用值

假设我有以下四个对象:

我现在想将它们转换Option为以下形式的 fp-ts 承载对象:

天真的方法是编写两个函数(或者确实内联进行这些计算):

但是说,我想提取一个更抽象的函数,它可以采用任意对象和任意键,并返回正确的选项。

第一次尝试可能看起来像这样:

这无法编译:

该错误消息非常有意义,但我不知道如何解决它。欢迎任何想法

0 投票
3 回答
270 浏览

typescript - 从选项数组中过滤掉无的最佳方法

假设我有以下类型:

那么如何在类型之间进行转换呢?以下工作但感觉超级混乱:

在这一点上,我什至不确定如果我必须立即将它们退出为可空值,我为什么还要为选项而烦恼。我可以通过少一步使用number | null. 那么fp-ts做到这一点的“方法”是什么?