Skip to content

Targo 速查表

Targo 使用 TypeScript 风格语法,但语义是 Go-first。把它当成一个用 TS 表面语法表达的 Go 风格语言,而不是"换了编译器的 JavaScript"。

心智模型

  • src/ 是源码,dist/tsconfig.targo.json 是生成产物
  • types/.targo/ 是声明输出,不要手动编辑
  • 以当前 Targo 行为为准,不要按纯 TypeScript 预期来判断
  • 如果一个写法"看起来是合法 TS 但不太像 Go",先验证再使用

支持矩阵

核心类型

特性状态说明
number支持映射到 float64
显式 Go 数值类型支持intint64uint32float64 等,API 边界优先使用
bool支持条件必须是显式 bool
string支持.length 遵循 Go len(字节长度)
byte / rune支持Go 字符类型
bigint支持映射到 *big.Int,不可变语义
null / undefined支持Targo 可空模型的一部分
?. / ??支持可选链和空值合并

结构体与类型

特性状态说明
class支持Go struct,引用语义
constructor支持受 checker 约束
extends 继承不支持优先使用组合
interface支持Go 风格契约
GoInterface支持Go interface 边界标记
Embedding<{ ... }>()支持结构体嵌入模式
DefinedType<...>()支持Go defined type
#private 字段支持使用此形式
private / protected 关键字不支持使用 #field
Struct tags支持通过 @json / @tag JSDoc 注释

集合

特性状态说明
slice<T>支持Go-native 动态集合
Array<T> / T[]支持Runtime-backed 集合,带 JS 风格方法
map<K, V>支持Go map 语义
Map<K, V>支持Runtime-backed 有序 map,带 JS 风格方法
Set<T>支持Runtime-backed 有序 set
Fixed<T, N>支持固定大小 Go 数组
chan<T>支持Channel 通信

函数与控制流

特性状态说明
Tuple 多返回值支持[T, error | null] 模式
error | null支持首选错误模型
panic() / recover()支持谨慎使用
defer支持Go 风格延迟执行
async/await不支持使用 Go 并发原语
Promise不支持无 JS 异步运行时
go(() => {})支持启动 goroutine
chan<T>支持Channel 通信
switch (chan.$select)支持Select 风格协调

工具链与互操作

特性状态说明
直接导入 Go 包支持变更后需刷新声明
targo init支持刷新声明和项目状态
targo test支持使用 Go 测试运行器
testing.T / testing.B支持标准测试和基准签名
/** @go:* */ 指令支持基于 JSDoc 的 Go 指令

迁移快速规则

  • 用显式错误返回替代异常驱动的 API
  • Go-native 代码优先用 slice<T>;需要 runtime 集合方法时用 Array<T>
  • Unicode 相关场景重新检查字符串索引假设
  • 变更依赖、导入或 Targo 配置后运行 npm run targo init
  • 在 Go 风格和 JavaScript 风格之间,优先选 Go 风格