fp-ts函数式编程 - 一些小技巧
问:如何在pipe中实现if/else判断null?
答:Option.fromNullable
import { pipe } from "fp-ts/function";
import * as O from "fp-ts/Option";
let obj = {
state: {
value: "test"
}
};
function calculate(input: { value: string|null }) {
console.log('input');
return input?.value;
}
console.log(
pipe(
obj.state,
O.fromNullable,
O.map((value) => calculate(value))
)
);
问:取出Either中的成功或失败信息
答:Folder(或Chain),以下是Folder代码示例
import { either as E } from "fp-ts";
import { flow } from "fp-ts/function";
interface Person {
name: string;
}
function ValidateName(name: string): E.Either<string, string> {
return /[a-zA-z]/.test(name)? E.right(name) : E.left("invalid name")
}
const makeError = (message: string) => new Error(message);
const makeUser = flow(
ValidateName,
E.map((name): Person => ({ name })),
E.mapLeft(makeError)
);
// (name: string) => string
const main = flow(
makeUser,
E.fold(
(error) => error.message,
({ name }) => `Hi, my name is "${name}"`
)
);
console.log(main("Tom"));
console.log(main("123"));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具