Intl.NumberFormat.formatToParts 在 Edge 上不存在

Intl.NumberFormat.formatToParts does not exist on Edge

如下所示,Microsoft Edge 中似乎缺少 Intl.NumberFormat.formatToParts

但是,MDN and CanIUse 都告诉我我可以...

我该怎么办?我似乎找不到任何网站讨论这个问题,也找不到 polyfill(编辑:MDN 上实际上提供了 polyfill,但正如我在最后一句话中所说,我对这种方法的原因更感兴趣缺少,而 MDN 和 CanIUse 都说它在 Edge 上可用)。

我是这样使用的:

return (_numberFormat as any).formatToParts(val).map(({type, value}) => {
    if (type === 'group')
        return ' ';

    return value;
}).reduce((string, part) => string + part);

(我所做的只是使用适当的 space 字符而不是 unicode 默认字符,这对我的客户来说太苗条了)

我知道我可以解决这个问题(执行基本格式,然后自己替换 unicode space,或者实现 polyfill),但我更感兴趣的是这个方法没有似乎存在于 Edge 上,而地球上的每个人似乎都相信它确实存在。

感谢任何输入:)

亲切的问候,

Edge 确实缺少这些方法:

console.log(typeof Intl.NumberFormat.prototype.formatToParts);
console.log(typeof Intl.DateTimeFormat.prototype.formatToParts);
将原型 属性 类型列为 Firefox 中的 function 和 Edge 中的 undefined

可能 MDN 文章被 Microsoft 在 TypeScript 中键入函数(与在 Edge 中实现它们无关)和 listing the issue as fixed.


请注意,关于 formatToParts 的 MSDN 文章的 google 链接现在只需重定向到 MDN。


有关 MDN 上 Edge 支持列表的更新 (https://github.com/mdn/browser-compat-data/pull/3769)(foolip 在评论中报告)。

测试和调查确认 formatFromParts 支持已添加到 Edge 18

然而,截至 2019 年 4 月 9 日(昨天),这还没有通过 Windows 更新推送到我的机器上,Edge 在(汉堡点 > 设置 >关于这个应用程序)。谷歌搜索 "has windows 1810 been pushed through windows update" 揭示了一段麻烦的历史,这足以解释为什么我仍然 运行 Win 1803 和 Edge 17。

我建议 support page on MDN 将 "yes" 替换为“18”以获得 Edge 支持以消除混淆。