Wavy Dot: Syntactic Support for Promise Pipelining S1
中文标题:波浪点:Promise 管道的语法支持
- 阶段: Stage 1
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
该提案引入了新的“波浪点” (~.) 语法用于 promise 管道,为 eventual-send API 提供语法糖。它定义了一个与点 (.) 具有相同优先级的中缀运算符,以实现对 promise 的最终获取和方法调用。
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
proposal-wavy-dot
用于 promise 管道的愉悦表示法。
- Mark S. Miller @erights, Agoric
- Michael Fig @michaelfig, Agoric
- Chip Morningstar @FUDCo, Evernote
状态
已提交给 TC39(JavaScript 标准委员会),并达到第 1 阶段。
概要
这是 proposal-eventual-send 的后续提案,为该提案的 API 提供语法糖。
2011 年的 ECMAScript 并发 strawman 提案 也描述了一个用于支持 promise 管道的中缀感叹号 (!) 运算符的简单去糖化。为了避免与 TypeScript 冲突,本提案改为引入波浪点 (~.) 语法。
波浪点
与 可选链提案 的 (?.) 类似,波浪点 (~.) 是一个提议的中缀运算符,其优先级与点 (.) 相同。两者都可以理解为 形容词点,即一种类似点的操作,但根据形容词而有所不同。一旦可选链提案被接受,我们将在此提案中添加一个结合这两个形容词的运算符,例如 (?~.) 或 (~?.)。
当波浪点表达式出现在可能会使用表达式值的语法上下文中时,该语法具有以下等价关系
当表达式出现在明显忽略表达式值的语法上下文中,例如 表达式语句 时,等价关系如上,但使用这些内部方法的 [[*SendOnly]] 变体。
提议的语法
抽象语法:
尝试性的具体语法,其中 "..." 表示该非终结符的现有产生式。我们的意图是这种语法遵循 可选链提案 的模式。
原型
一个 Babel playground 使用当前作用域中 HandledPromise 对象上的静态方法实现了此提案。 此语法的进行中 Babel Pull Request 也可用。
