Skip to content

函数与方法

这页讲的是在 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 和配置命令到底是什么?

看这里: