Почему Intl.NumberFormat не работает с модулями в Safari и Firefox? - PullRequest
2 голосов
/ 06 марта 2020

Я пытаюсь использовать приведенный пример здесь относительно форматирования числа.

console.log((16).toLocaleString('en-GB', {
    style: "unit",
    unit: "liter",
    unitDisplay: "long"
}));

Я пробовал в chrome, и он прекрасно работает. Тем не менее, в Safari, а также Firefox я получаю следующие ошибки соответственно Error: style must be either "decimal", "percent", or "currency" и Error: invalid value "unit" for option style.

Из документов, которые я считал, он должен работать на всех браузерах после проверки совместимости браузера. Я пытался искать ответы, но я не могу найти что-нибудь по этому вопросу. Кто-нибудь знает, почему это так или где я мог бы найти больше информации?

1 Ответ

3 голосов
/ 08 марта 2020

Проблема связана со значением unit поля style.

Согласно ECMA-402, 6-е издание, июнь 2019 г. Спецификация API интернационализации ECMAScript® 2019 :

Значением этого поля должна быть запись, в которой должны быть поля с именами трех стилей числового формата: «десятичный», «процент» и «валюта».

Согласно Проекту ECMA-402 от 27 февраля 2020 г. Спецификация API интернационализации ECMAScript® 2020 :

Значение этого поля должно быть a Запись, которая должна иметь поля с именами четырех числовых стилей формата: «десятичный», «процент», «валюта», и «единица» .

Firefox и Safari внедряют 6-е издание спецификации ECMA-402, а Chrome реализует черновую версию этой же спецификации. Проект спецификации может измениться в любое время, и нет никаких официальных гарантий, что это новое значение unit будет включено в 7-е издание. Если вы хотите быть совместимыми с разными браузерами и ориентированными на будущее, вам следует придерживаться 6-го издания и дождаться выпуска 7-го издания, прежде чем использовать эти новые функции.

Если вам нужны подробности, вы можете прочитать предложение для этой новой функции .

...