Ошибка trow оператора распространения объекта в грани Microsoft - PullRequest
0 голосов
/ 12 марта 2020

У меня есть код:

let a = {a: 'a', b: 'b'};
let b = {c: 'c', d: 'd'};
let c = {...a, ...b};

В chrome / firefox / ... его отображение: c = {a: 'a', b: 'b', c: 'c', d: 'd'}, но в край Microsoft ошибка его Expected identifier, string or number.

Я пытаюсь использовать cdn.polyfill.io и https://babeljs.io/docs/en/babel-polyfill, но безуспешно.

Что я могу сделать, чтобы запустить мой webpack код в microsoft edge ?

Ответы [ 2 ]

4 голосов
/ 12 марта 2020

Он должен быть доступен в Edge начиная с 79 без необходимости использования какого-либо транскомпилятора (например, Babel) (но не IE, не путайте их).

https://caniuse.com/#feat = mdn-javascript_operators_spread_spread_in_object_literals

Тем не менее, в большинстве случаев вместо этого можно использовать Object.assign(), если хотите -

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Ваш код будет быть:

let a = {a: 'a', b: 'b'};
let b = {c: 'c', d: 'd'};
let c = Object.assign(a,b)

console.log(c)

Object.assign() поддерживается начиная с Edge 12:

https://caniuse.com/#feat = mdn-javascript_builtins_object_assign

1 голос
/ 13 марта 2020

Синтаксис { ...obj } называется " Свойства покоя / расширения объекта " и является частью ECMAScript 2018, который не поддерживается Edge Legacy. Вы можете использовать Вавилон , чтобы перенести его.

Если вы просто хотите использовать его в средах, отличных от Node.js, вы можете использовать babel-standalone . Вам просто нужно загрузить babel-standalone в ваш скрипт и написать скрипт, который вы хотите преобразовать, в тег скрипта с типом «text / babel» или «text / jsx». , результат в Edge Legacy будет {"a":"a","b":"b","c":"c","d":"d"}:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.18.1/babel.min.js"></script>
</head>
<body>
    <script type="text/babel">
        let a = { a: 'a', b: 'b' };
        let b = { c: 'c', d: 'd' };
        let c = { ...a, ...b };
        console.log(JSON.stringify(c));
    </script>
</body>
</html>
...