Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 边缘上不存在Intl.NumberFormat.formatParts_Javascript_Number Formatting_Missing Features - Fatal编程技术网

Javascript 边缘上不存在Intl.NumberFormat.formatParts

Javascript 边缘上不存在Intl.NumberFormat.formatParts,javascript,number-formatting,missing-features,Javascript,Number Formatting,Missing Features,如下所示,Microsoft Edge中似乎缺少Intl.NumberFormat.formatParts: 然而,两者都告诉我我可以 我该怎么办?我似乎找不到任何网站谈论这个问题,也找不到polyfill(编辑:polyfill实际上在MDN上可用,但正如我在最后一句中所说,我更感兴趣的是为什么缺少此方法,而MDN和CanIUse都说它在Edge上可用) 我是这样使用它的: return (_numberFormat as any).formatToParts(val).map(({type

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

然而,两者都告诉我我可以

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

我是这样使用它的:

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

    return value;
}).reduce((string, part) => string + part);
(我所做的只是使用一个合适的空格字符,而不是unicode默认字符,这对于我的客户来说太细了)

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

欢迎任何意见:)


好心的问候,

Edge中确实缺少这些方法:
console.log(Intl.NumberFormat.prototype.formatParts的类型);

log(Intl.DateTimeFormat.prototype.formatParts的类型)嗯。。根据这个(),它是可用的。@wentjun正是我说的:)但是它不可用。我感到惊讶的是,似乎没有人谈论它在网络上的任何地方的边缘缺失。现在大多数人都在使用通过babel输出ES5的构建管道,这样你就可以使用最新的TypeScript和ES6语法,但你的构建与所有ES5浏览器兼容。Thx@AdrianBrand,我就是其中之一,我使用的是TypeScript,正如您可能从代码片段中猜到的。您可能已经猜到的另一件事是,TS中缺少
formatToParts
,至少在我当前使用的版本中是如此(因此
就像任何
技巧一样)。我不太确定我将TS文件传输到哪个EcmaScript版本,我必须仔细检查。无论如何谢谢你!检查tsconfig.json文件中编译器选项下的“target”:“es5”。根据这个问题(),它似乎在TypeScript中得到了修复,这意味着我必须运行旧版本的TS(因此是
(\u numberFormat as any.)。formatParts
)。我决定使用单空格字体,这样千位分隔符对于我的客户端来说就足够宽了。谢谢你的意见
Intl.NumberFormat.prototype.FormatParts
Intl.DateTimeFormat.prototype.FormatParts
确实存在于Edge 18中。有关MDN中此问题的讨论,请参阅。@DowIP感谢有助于为答案添加详细信息的链接。