Опция, которая технически удовлетворяет правилам линтера, заключается в объявлении rest
авансом, деструктурировании свойства a
в rest
и , а затем , используя синтаксис rest для установкиостальная часть объекта в rest
имя переменной:
const initObject = {
a: 0,
b: 0,
c: 0
};
let rest;
({ a: rest, ...rest } = initObject);
console.log(rest);
К сожалению, если вы хотите избежать var
, вы не можете сделать это в одной строке, как
let { a: rest, ...rest } = initObject
, потому что когдаВ левой части {
объявляется переменная, каждое новое имя переменной справа инициализируется отдельно - то есть для интерпретатора это выглядит как
let rest = initObject.a;
let rest = <everything else in initObject>
Но дубликаты let
идентификаторов для одного и того же имени переменной не допускаются.Вы можете сделать это в одну строку с var
, для которого разрешены дубликаты идентификаторов:
const initObject = {
a: 0,
b: 0,
c: 0
};
var { a: rest, ...rest } = initObject;
console.log(rest);
Но все это немного странно.Я бы предпочел настроить / игнорировать линтер или использовать что-то иное, чем деструктурирование, как предлагали другие ответы.