JS 标准库
当你需要快速确认"Targo 是否支持我想用的 JS 风格 API"时,查阅此页。
关键问题不仅是是否支持,还包括行为方式:
- 接近熟悉的 JS 表面
- 使用 Go 风格返回值或控制流
- 通过 runtime-backed Targo 类型而非原生 Go 容器
集合类型(Array<T>、Map<K, V>、Set<T>、slice<T>、map<K, V>)请参见 collections.md。
JSON 和 Object 辅助函数
| API | 状态 | 说明 |
|---|---|---|
JSON.stringify(value) | 支持,Go 风格错误 | 返回 [string, error | null] |
JSON.parse<T>(text) | 支持,Go 风格错误 | 返回 [T, error | null] |
Object.keys(obj) | 支持 | 返回 slice<string> |
Object.values(obj) | 支持 | 返回 slice<unknown> |
Object.entries(obj) | 未在 runtime 表面文档化 | 在声明暴露之前不要假设存在 |
序列化或解析时,把 JSON 当作 Targo Go 风格错误模型的一部分,而不是 JavaScript 异常流。
Console、Math 和数值全局变量
| API | 状态 | 说明 |
|---|---|---|
console.log(...) | 支持 | 映射到 Go fmt.Println(...) |
console.error(...) | 支持 | 映射到 fmt.Fprintln(os.Stderr, ...) |
NaN / Infinity | 支持 | 映射到 Go math 辅助函数 |
isNaN(x) / isFinite(x) | 支持 | Go-backed 数值辅助函数 |
Math.* | 广泛支持 | floor、ceil、round、pow、sqrt、log、sin、atan2、min、max 等 |
注意:Math 操作 float64 类型值。不要假设 JavaScript 的单一 number 心智模型在 Targo 代码中总是正确的 API 形状。
字符串和 RegExp
| API | 状态 | 说明 |
|---|---|---|
| 常见字符串方法 | 广泛支持 | trim、toUpperCase、toLowerCase、includes、startsWith、endsWith、indexOf、split、replace、replaceAll、repeat、padStart、padEnd、slice、substring、charAt、at 等 |
str.length | 支持,Go 语义 | 遵循 Go len,需重新检查 Unicode 假设 |
RegExp 字面量和构造函数 | 支持 | 基于 Go RE2 引擎 |
RegExp.test() / RegExp.exec() | 支持 | exec() 返回 Array<string> | null |
| 字符串的 RegExp 方法 | 支持 | match()、matchAll()、search()、replace()、split() |
注意:
- RegExp 行为遵循 RE2 约束。不要假设前瞻、后顾或反向引用可用
- 字符串长度和搜索位置遵循 Go 风格索引规则
不支持或有风险的 JS Runtime 假设
| API | 状态 | 说明 |
|---|---|---|
Promise | 不支持 | 无 JS promise runtime |
async/await | 不支持 | 使用 Go 并发原语 |
setTimeout / setInterval | 不支持 | 使用 Go time API |
fetch | 不支持 | 使用 Go 包如 net/http |
| DOM / 浏览器全局变量 | 默认不支持 | 除非目标环境明确提供 |
实践规则
- 属于 JS 异步 runtime 行为的 API,在当前声明证明之前假设不可用
- 看起来像 JS 但返回
[T, error | null]的 API,当作 Go 风格边界处理 - 依赖字符串长度、索引或正则边界情况时,以当前 runtime 声明和 fixture 为准验证