结果
轻而易举、安全 Result 在 TypeScript 中执行强性错误处理模式.
- 零依赖关系
- QQ 类型安全错误处理
- * 功能管道(同步/同步)
- * 丰富的工具集(图、链、组合等)
- * 跨文本结果的边界安全检查
安装
npm install @collidor/result
基本用途
import { Result } from "@collidor/result";
function divide(a: number, b: number): Result<number, string> {
if (b === 0) {
return Result.err("Division by zero");
}
return Result.ok(a / b);
}
const res = divide(10, 2);
if (res.success) {
console.log(res.value); // 5
} else {
console.error(res.error); // "Division by zero"
}
特征
创造结果
Result.ok(value): 创建成功结果.Result.err(error): 创建失败结果.Result.none(): 失败结果的快捷键null错误.Result.try(() => ...): 环绕可能丢出的一个函数.Result.from(value | Error): 将一个值或出错对象转换为结果.Result.fromPromise(promise):兑现诺言,将拒绝结果变成结果.
与成果合作
Result.isResult(thing): 边界安全检查一个值是否是结果对象.Result.unwrap(result): 返回值或丢出再水合错误.Result.getOrElse(result, defaultValue): 返回值或默认值.Result.map(result, fn):如果成功,则转换值.Result.chain(result, fn): 链条另一个结果返回函数.Result.combine(results[]):将多个结果合并为一个结果(全结果或无结果).
功能管道
Piping 允许您将操作连锁:
const result = Result.pipe(
Result.ok(10),
(n) => n * 2,
(n) => Result.ok(n + 5),
(n) => n.toString()
);
// Result.ok("25")
对于同步操作:
const result = await Result.pipeAsync(
Result.ok(10),
async (n) => n * 2,
(n) => Promise.resolve(Result.ok(n + 5))
);
API 文档
类型
Result<T, E>主要类型:Ok<T, E>财务报告和审定财务报表Err<E, T>。 。 。 .Unwrap<T>: 帮助键从 a 推断值类型Result或者说Promise<Result>。 。 。 .
结果静态方法
| 方法 | 说明 |
|---|---|
ok(value?) | 创建 OK 结果 . |
err(error) | 创建错误结果. |
none() | 创建失败的结果 null 错误. |
isResult(thing) | 检查值是否为结果对象. |
from(val) | 将值或出错转换为结果 . |
fromPromise(p) | 将承诺写入结果. |
unwrap(res) | 获取值或丢出再水合错误. |
map(res, fn) | 如果成功, 则转换值 . |
chain(res, fn) | FlatMap for Results. (原始内容存档于2018-09-27). |
getOrElse(res, def) | 获取值或返回默认值. |
try(fn) | 执行 fn 并捕捉出任何错误 . |
pipe(res, ...ops) | 成果的职能构成. |
pipeAsync(res, ...ops) | Async功能构成. |
combine(results) | 转弯 Result[] 输入 Result<any[]>。 。 。 . |
捐款
- 分叉仓库
- 创建特性分支
- 提交更改
- 推向分支
- 创建新的拉请求
许可证
麻省理工学院