问题标签 [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.
typescript - 在 fp-ts 中将 union 类型转换为 Either 类型
在打字稿中,如何将联合类型A|B
转换为fp-ts?Either<A,B>
感觉很自然,必须有一种很好的方法。
typescript - 如何从 ReaderEither[] 到 ReaderEither在 fp-ts 中?
在 fp-ts 中,我如何从ReaderEither<R, E, A>[]
到ReaderEither<R, E[], A[]>
?本质上,我想将实例数组转换为ReaderEither
单个ReaderEither
实例。
我试过寻找答案,但运气不佳。我是函数式编程和 fp-ts 的新手,所以我仍在尝试围绕所有概念并将它们付诸实践。我感谢您的帮助。
typescript - typescript 可区分联合的 switch 语句的替代方法
我创建了这个游乐场,代码如下:
BundlerState 是一个有区别的联合,开关缩小了类型。
问题是它不能扩展,而且大的扩展 switch 语句非常可怕。
有没有更好的方法可以写这个并且仍然保持漂亮的类型缩小?
你不能做这个:
因为类型没有缩小。
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]
。
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(...)(...)
调用并非如此
typescript - Typescript: How to kleisli compose (monadic compose) Promise monad using fp-ts
如何组合两个 kleisli 箭头(函数)并f:A -> Promise B
使用fp -ts?g: B -> Promise C
h:A -> Promise C
我对 Haskell 很熟悉,所以我会这样问:>=>
(fish operator) 的等价物是什么?
typescript - 如何避免 fp-ts 中带有链的厄运金字塔?
我经常遇到这种情况,需要完成几个顺序操作。如果每个操作都专门使用上一步中的数据,那么我可以很高兴地做类似pipe(startingData, TE.chain(op1), TE.chain(op2), TE.chain(op3), ...)
. op2
当还需要来自 的数据时,我找不到一个很好的方法来编写这个startingData
,没有一堆嵌套回调。
在下面的示例中,如何避免厄运金字塔?
typescript - io-ts 的字段名称/密钥验证?
如何确保传入的 JSON 密钥有效?我使用 t.decode,它没有抛出错误。
传入的 JSON 有一个图像字段,但它的名称为 imageee。io-ts 不会抛出错误。如何确保可选检查?
typescript - 从对象中获取可选的通用值
假设我有以下四个对象:
我现在想将它们转换Option
为以下形式的 fp-ts 承载对象:
天真的方法是编写两个函数(或者确实内联进行这些计算):
但是说,我想提取一个更抽象的函数,它可以采用任意对象和任意键,并返回正确的选项。
第一次尝试可能看起来像这样:
这无法编译:
该错误消息非常有意义,但我不知道如何解决它。欢迎任何想法
typescript - 从选项数组中过滤掉无的最佳方法
假设我有以下类型:
那么如何在类型之间进行转换呢?以下工作但感觉超级混乱:
在这一点上,我什至不确定如果我必须立即将它们退出为可空值,我为什么还要为选项而烦恼。我可以通过少一步使用number | null
. 那么fp-ts
做到这一点的“方法”是什么?