函数与方法
这页讲的是在 Targo 里如何组织函数和方法,而不是列出所有语法细节。
核心心智模型
- 函数语法看起来像 TypeScript
- 参数、返回值和错误处理思维更接近 Go
- 方法通常挂在
class上,但设计目标仍然是 Go-first 的结构和行为组织
先区分三类函数
1. 纯计算函数
适合放:
- 值转换
- 数据处理
- 领域规则
写法建议:
- 参数和返回值尽量明确
- 避免隐式失败路径
- 如果函数天然是同步的,就保持同步
2. 带错误返回的函数
这是 Targo 里最常见的业务函数形态之一:
- 返回值写成
[T, error | null] - 调用点显式检查错误
- 逐层返回或包装错误
不要先按 try/catch 的习惯建模,再强行翻译。
3. 方法
当行为和某个结构强绑定时,再考虑放到 class 上。
更适合做方法的情况:
- 逻辑依赖对象内部状态
- 行为和结构天然绑定
- 你希望对外暴露一个清晰的领域接口
不适合做方法的情况:
- 实际只是通用工具函数
- 只是为了模仿 TypeScript OOP 风格
设计建议
参数设计
- 优先清晰、显式的参数列表
- 可选参数和默认参数要谨慎使用,确认它们没有让控制流变得更隐晦
- 如果参数组合已经很复杂,优先考虑把输入建模成一个清晰的结构
返回值设计
- 普通成功路径:直接返回值
- 可能失败:
[result, err] - 多个业务结果:用 tuple 表达清晰意图,而不是隐藏在对象里
闭包和箭头函数
- 可以用,但优先用于局部逻辑和集合操作
- 如果闭包承担核心控制流职责,先确认是否真的比显式函数更清晰
与 Reference 的边界
如果你的问题是下面这些,就应该去 /reference/*:
- 当前具体支持哪些函数语法?
- 哪些 JS 熟悉 API 可以直接用?
- CLI 和配置命令到底是什么?
看这里: