@effectionx/scope-eval

中文文档
0.1.3发布于 2026/03/23MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 5.2万

在评价范围内评价业务,同时保留各种评价的资源

中文使用文档
文档目录9 节
  1. 使用量
  2. 使用Eval范围
  3. 处理错误
  4. 框/撤销框
  5. API 密码
  6. useEvalScope(): Operation<EvalScope>
  7. box<T>(content: () => Operation<T>): Operation<Result<T>>
  8. unbox<T>(result: Result<T>): T
  9. 使用大小写

@ effectionx/ scope- eval

在保留资源的同时在一定范围内评价效果业务.


虽然 Scope.run 财务报告和审定财务报表 Scope.spawn 可以在孤立的范围内评价行动,一旦行动返回,资源就会被撕毁. useEvalScope 允许您在现有的范围内引用操作,接收评估的结果,同时为该范围的生命周期保留资源.

使用量

使用Eval范围

创建一个评估业务并保留其资源的范围:

import { main, createContext } from "effection";
import { useEvalScope } from "@effectionx/scope-eval";

await main(function*() {
  const context = createContext<string>("my-context");

  const evalScope = yield* useEvalScope();

  // Context not set yet
  evalScope.scope.get(context); // => undefined

  // Evaluate an operation that sets context
  yield* evalScope.eval(function*() {
    yield* context.set("Hello World!");
  });

  // Now the context is visible via the scope
  evalScope.scope.get(context); // => "Hello World!"
});

处理错误

操作安全进行并返回a Result<T>数字 :

import { main } from "effection";
import { useEvalScope } from "@effectionx/scope-eval";

await main(function*() {
  const evalScope = yield* useEvalScope();

  const result = yield* evalScope.eval(function*() {
    throw new Error("something went wrong");
  });

  if (result.ok) {
    console.log("Success:", result.value);
  } else {
    console.log("Error:", result.error.message);
  }
});

框/撤销框

将运行结果作为值的公用事业:

import { main } from "effection";
import { box, unbox } from "@effectionx/scope-eval";

await main(function*() {
  // Capture success or error as a Result
  const result = yield* box(function*() {
    return 42;
  });

  // Extract value (throws if error)
  const value = unbox(result); // => 42
});

API 密码

useEvalScope(): Operation<EvalScope>

创建单独的评估操作范围.

返回 a EvalScope 改为:

  • scope: Scope - 检查背景的基本效果范围
  • eval<T>(op: () => Operation<T>): Operation<Result<T>> - 评估一个行动

box<T>(content: () => Operation<T>): Operation<Result<T>>

执行操作并捕获其结果( 成功或出错) Result<T>。 。 。 .

unbox<T>(result: Result<T>): T

从 a 提取值 Result<T>,如果它是一个错误.

使用大小写

  • 测试: 评估业务并检查上下文/状态而不撕毁
  • 资源留存: 通过多种评价保持资源活力
  • 错误边界: 安全执行可能失败的操作

版本与发布记录

@effectionx/scope-eval 共发布 4 个版本,首次发布于 2026/02/05;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.3latest2026/03/237 个月前
0.1.22026/02/248 个月前
0.1.12026/02/178 个月前
0.1.02026/02/059 个月前

关于 @effectionx/scope-eval 的常见问题

@effectionx/scope-eval 是什么?

在评价范围内评价业务,同时保留各种评价的资源

如何安装 @effectionx/scope-eval?

在项目目录运行 npm install @effectionx/scope-eval,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:effection(^3 || ^4)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@effectionx/scope-eval 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@effectionx/scope-eval 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@effectionx/scope-eval 可以商用吗?

@effectionx/scope-eval 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@effectionx/scope-eval 的下载量有多少?

根据 npm 官方下载统计,@effectionx/scope-eval 在 2026/10/13 – 2026/11/11 这 30 天内被下载 51,524 次,日均约 1,717 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@effectionx/scope-eval 还在维护吗?

最新版本 0.1.3 发布于 2026/03/23(7 个月前);至今共发布 4 个版本,其中过去 12 个月发布了 4 个;首次发布于 2026/02/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。