TS2345 · Effect
这是线索,不是结论。
内容由机器从检索到的中文译文合成,尚未经人确认;引用是提问那一刻的快照,
译文更新后可能过时。每条都附了可点回原文的链接 —— 请核对后再采用。
发现不对请
提 issue。
报错原文
src/app.ts(12,5): error TS2345: Argument of type 'Effect<number, never, never>' is not assignable to parameter of type 'number'. Did you mean to call Effect.runPromise? at /Users/bob/proj/node_modules/effect/src/Effect.ts:5:1
诊断
最可能的原因:第 5 行把 `Effect` 值本身当成了普通参数传入,而该位置期望 `number`;`Effect` 只是对计算的描述而非计算结果,所以类型不匹配(错误提示里的 `Effect.runPromise` 只是 TS 的猜测,别直接照做)。修复方向:确认该参数是否应传真实数值——若是,就把产生该数值的计算改为在当前流程内组合(如用 `Effect.map`/`Effect.flatMap` 等)而不是把 `Effect` 直接递给期望 `number` 的形参;若确实需要把它跑出结果,只能用 `Effect.runPromise`,且它是异步的,返回 `Promise`,不能在同步位置当作 `number` 使用。
依据(3 条站内译文)
- 运行 Effect
#runpromisePromise 的代码兼容),请使用 Effect.runPromise。
核验记录 · 英文原文 · 基线16b1646 - 缓存 Effect
#onceconst result = await Effect.runPromise(program)
核验记录 · 英文原文 · 基线bf46254 - 欢迎来到 Effect
#你的学习路径Effect.runPromise(program)
核验记录 · 英文原文 · 基线3a0c635
你也被这个报错卡住了?
把你自己的报错整段贴到报错诊断 —— 它提取的 API 名与类型名来自你的实际代码,比照抄别人的诊断更准; 诊断完也会并进这一条(同一报错算同一条)。
本页来自 2026-09-13 的快照(https://effect-ts.cn)。来自站内 /debug 的真实诊断,按报错签名归并(绝对路径/行列号/堆栈帧已归一)。条目为机器生成、未经人审(reviewed 字段),引用是提问那一刻的快照。