Skip to content

常见模式对比

这页不是完整支持矩阵,而是帮助 TypeScript 开发者建立“迁移时应该怎么改写”的直觉。

1. 异步请求

TypeScript 里你会怎么写

  • async function
  • await fetch(...)
  • Promise.all(...)

在 Targo 里应该先怎么想

  • 这段逻辑是否真的需要并发?
  • 如果需要并发,数据和错误分别通过什么 channel 流动?
  • 如果不需要并发,是否应该直接改成同步 Go 风格 API?

先看:

2. 数组处理

TypeScript 里你会怎么写

  • map
  • filter
  • reduce

在 Targo 里应该先怎么想

  • 我需要的是 Go-native 集合还是 JS 风格方法?
  • 这里用 slice<T> 更自然,还是 Array<T> 更自然?

先看:

3. 类和继承

TypeScript 里你会怎么写

  • class
  • extends
  • private / protected

在 Targo 里应该先怎么想

  • 这里是在建模结构,还是在复用行为?
  • 这里应该用组合、embedding,还是 interface?

先看:

4. 错误处理

TypeScript 里你会怎么写

  • try/catch
  • 异步异常传播

在 Targo 里应该先怎么想

  • 返回值里应该是什么结果?
  • 错误是直接返回还是包装后返回?

先看:

5. 包和运行时

TypeScript 里你会怎么想

  • Node / browser API 是否可用
  • JS runtime global 是否存在

在 Targo 里应该先怎么想

  • 这是不是 Go 包更该负责的事情?
  • 这是不是一个当前根本不该假设存在的 JS runtime API?

先看: