问题标签 [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 投票
1 回答
1275 浏览

typescript - 如何使用任务单子?(fp-ts)

我理解它的目的Task以及为什么它很重要。问题是我不知道如何正确使用它或用它作曲,真的。

如果我只是打电话getHello(),它会给我Promise<pending>

但是,如果我这样做:

有用。

但是这个:

没有。

此外,我怎么能用它作曲?像这样:

0 投票
1 回答
122 浏览

typescript - OO 到功能——从日常问题中学习

我正要学习使用函数式编程fp-ts,我只是在问自己,将这样的东西“转换”为函数式范式的正确函数式方法是什么:

所以,我想我应该这样走:

既然add()操作涉及到状态的修改,应该依赖IO? 如果add返回一个新的状态对象,它是一个纯函数,所以它不需要使用IO?所以我在这里提出的问题可能有点宽泛,但是:这里推荐的技术/模式是什么?

0 投票
1 回答
851 浏览

javascript - 使用 IO-TS 将 JS 字符串数组转换为 union

我正在使用io-ts,我想知道是否有办法将字符串(文字)数组转换为此类文字的联合。例如:

我不知道这是否可行,但鉴于这io-ts只是 JS 函数,我不明白为什么不这样做。我只是不知道怎么做。

在这种情况下,最终结果应该是(使用 io-ts):

0 投票
1 回答
443 浏览

typescript - fp-ts:如何组合多个 Option 生产者?

我正在寻找fp-ts具有这种行为的函数:

我无法在此处的文档中Option找到相应的功能。

0 投票
1 回答
427 浏览

fp-ts - 如何使用 io-ts 解析和验证 JsonRecord?

我需要解析一个包含 json 的字符串。我需要确保输出是一个JsonRecord而不是一个 json 原语。

我已经尝试使用fp-tsandio-ts为此。到目前为止,我知道这t.UnknownRecord.decode将返回一个Either. 这将left用于原始和right记录。我不确定如何与parseJSON. 当我尝试时,我得到类型错误。请参阅下面测试之间的评论。

在这里尝试使用是正确的chain还是我应该使用其他东西?

0 投票
1 回答
607 浏览

typescript - 如何将已定义的接口与 io-ts 库一起使用?

我在我的应用程序中使用@types/fabric包。我想使用结构类型中的预定义接口(如ICircleOptions..etc IRectOptions.)。

如何将这些接口与io-ts库一起使用以进行运行时类型检查。

我已经定义了这样的类型:

我想使用结构预定义接口来定义我的对象数组的类型。

我已经浏览了https://github.com/gcanti/io-ts/issues/209 并且io-ts的作者在那里共享了示例,但不适用于我的情况。

请告诉我,这可能吗?谢谢。

0 投票
1 回答
291 浏览

typescript - io-ts : 将 TypeOf 与 DateFromISOString 一起使用

尝试验证和解码 api 响应:

问题是该类型将数据属性描述为日期,而它是jsonFoo中的字符串

我是否错过了那里的某些东西,或者我需要两种类型的传入数据和解码对象?

0 投票
1 回答
972 浏览

javascript - 使用 fp-ts 和 io-ts 获取和映射数据

我正在努力将我获取的数据“按摩”成我想要的形状,fp-ts用于功能转换和io-ts数据验证。

我在寻找什么

我想getSchools()返回一个Error描述出错的地方,或者一个经过验证School的数组。我的代码有些工作,但问题是,如果获取的学校数组中的一所学校未能通过验证,那么一切都会失败。我只想过滤掉那些失败的,然后返回其余的。

我到目前为止的代码

0 投票
2 回答
1189 浏览

typescript - 如何折叠两种不同的类型?FP-TS

我正在使用 FP-TS 学习 FP,但遇到了障碍:

我的存储库中有以下功能:

这部分很简单,对我来说很有意义。问题是当我尝试从我的控制器调用它时:

无论如何,这是我的getBook和我正在尝试做的事情:

问题是上面的代码给了我一个错误:

我认为问题在于E.fold期望onLeftonRight返回相同类型的结果:

但是,它可能不仅返回 a Task<string>,而且还返回 a Task<ParsedBook>

我尝试使用foldW,它扩大了类型,但同样的错误也是如此。

我真的不知道该怎么办;我觉得我在代码中建模类型的方式很糟糕?

如果有帮助,这里是 Codesandbox:https ://codesandbox.io/s/tender-chandrasekhar-5p2xm?file=/src/index.ts

谢谢!

0 投票
2 回答
765 浏览

typescript - 将数组转换为对象的正确 fp-ts 方法

我是函数式编程的新手,但想学习最佳实践。

将数组转换为对象的正确 fp-ts 方法是什么?

(items: Item[], keyGetter: (i: Item) => Key) => Record<Key, Item>

到目前为止,我使用自己的非 fp-ts 实现: