问题标签 [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)
我理解它的目的Task
以及为什么它很重要。问题是我不知道如何正确使用它或用它作曲,真的。
如果我只是打电话getHello()
,它会给我Promise<pending>
:
但是,如果我这样做:
有用。
但是这个:
没有。
此外,我怎么能用它作曲?像这样:
typescript - OO 到功能——从日常问题中学习
我正要学习使用函数式编程fp-ts
,我只是在问自己,将这样的东西“转换”为函数式范式的正确函数式方法是什么:
所以,我想我应该这样走:
既然add()
操作涉及到状态的修改,应该依赖IO
? 如果add
返回一个新的状态对象,它是一个纯函数,所以它不需要使用IO?所以我在这里提出的问题可能有点宽泛,但是:这里推荐的技术/模式是什么?
javascript - 使用 IO-TS 将 JS 字符串数组转换为 union
我正在使用io-ts,我想知道是否有办法将字符串(文字)数组转换为此类文字的联合。例如:
我不知道这是否可行,但鉴于这io-ts
只是 JS 函数,我不明白为什么不这样做。我只是不知道怎么做。
在这种情况下,最终结果应该是(使用 io-ts):
typescript - fp-ts:如何组合多个 Option 生产者?
我正在寻找fp-ts
具有这种行为的函数:
我无法在此处的文档中Option
找到相应的功能。
fp-ts - 如何使用 io-ts 解析和验证 JsonRecord?
我需要解析一个包含 json 的字符串。我需要确保输出是一个JsonRecord
而不是一个 json 原语。
我已经尝试使用fp-ts
andio-ts
为此。到目前为止,我知道这t.UnknownRecord.decode
将返回一个Either
. 这将left
用于原始和right
记录。我不确定如何与parseJSON
. 当我尝试时,我得到类型错误。请参阅下面测试之间的评论。
在这里尝试使用是正确的chain
还是我应该使用其他东西?
typescript - 如何将已定义的接口与 io-ts 库一起使用?
我在我的应用程序中使用@types/fabric包。我想使用结构类型中的预定义接口(如ICircleOptions
..etc IRectOptions
.)。
如何将这些接口与io-ts库一起使用以进行运行时类型检查。
我已经定义了这样的类型:
我想使用结构预定义接口来定义我的对象数组的类型。
我已经浏览了https://github.com/gcanti/io-ts/issues/209 并且io-ts的作者在那里共享了示例,但不适用于我的情况。
请告诉我,这可能吗?谢谢。
typescript - io-ts : 将 TypeOf 与 DateFromISOString 一起使用
尝试验证和解码 api 响应:
问题是该类型将数据属性描述为日期,而它是jsonFoo中的字符串
我是否错过了那里的某些东西,或者我需要两种类型的传入数据和解码对象?
javascript - 使用 fp-ts 和 io-ts 获取和映射数据
我正在努力将我获取的数据“按摩”成我想要的形状,fp-ts
用于功能转换和io-ts
数据验证。
我在寻找什么
我想getSchools()
返回一个Error
描述出错的地方,或者一个经过验证School
的数组。我的代码有些工作,但问题是,如果获取的学校数组中的一所学校未能通过验证,那么一切都会失败。我只想过滤掉那些失败的,然后返回其余的。
我到目前为止的代码
typescript - 如何折叠两种不同的类型?FP-TS
我正在使用 FP-TS 学习 FP,但遇到了障碍:
我的存储库中有以下功能:
这部分很简单,对我来说很有意义。问题是当我尝试从我的控制器调用它时:
无论如何,这是我的getBook
和我正在尝试做的事情:
问题是上面的代码给了我一个错误:
我认为问题在于E.fold
期望onLeft
和onRight
返回相同类型的结果:
但是,它可能不仅返回 a Task<string>
,而且还返回 a Task<ParsedBook>
。
我尝试使用foldW
,它扩大了类型,但同样的错误也是如此。
我真的不知道该怎么办;我觉得我在代码中建模类型的方式很糟糕?
如果有帮助,这里是 Codesandbox:https ://codesandbox.io/s/tender-chandrasekhar-5p2xm?file=/src/index.ts
谢谢!
typescript - 将数组转换为对象的正确 fp-ts 方法
我是函数式编程的新手,但想学习最佳实践。
将数组转换为对象的正确 fp-ts 方法是什么?
(items: Item[], keyGetter: (i: Item) => Key) => Record<Key, Item>
到目前为止,我使用自己的非 fp-ts 实现: