Skip to content

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.*广泛支持floorceilroundpowsqrtlogsinatan2minmax

注意:Math 操作 float64 类型值。不要假设 JavaScript 的单一 number 心智模型在 Targo 代码中总是正确的 API 形状。

字符串和 RegExp

API状态说明
常见字符串方法广泛支持trimtoUpperCasetoLowerCaseincludesstartsWithendsWithindexOfsplitreplacereplaceAllrepeatpadStartpadEndslicesubstringcharAtat
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 为准验证