Как деконструировать объект и исключить собственность? - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу деконструировать объект и исключить свойство.

Вот что я сейчас делаю:

 let x = {a:1, b:2, c:3};
 let y = {...x};
 delete y.c;
 store.setState(y);

Я нашел статью о ES7, в которой говорится, чтоновая функция для исключения свойств.Таким образом, вышеприведенное будет написано так:

 let x = {a:1, b:2, c:3};
 store.setState({c, ...x});

https://codeburst.io/use-es2015-object-rest-operator-to-omit-properties-38a3ecffe90

Вышеуказанное не работает в Angular 7, и я получаю следующую ошибку:

error TS2663: Cannot find name 'c'. Did you mean the instance member 'this.c'?

В настоящее время я использую TypeScript 3.1.6, и мой tsconfig.app.json файл выглядит следующим образом.

{
    "extends": "../tsconfig.json",
    "compilerOptions": {
        "outDir": "../out-tsc/app",
        "module": "es2015",
        "types": []
    },
    "exclude": [
        "src/test.ts",
        "**/*.spec.ts"
    ]
}

Вот родительский файл.

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

Теперь я думаю, что проблема в том, что строка "lib": ["es2017"] предназначена для ES6.

Что я могу сделать, чтобы включить эту функцию ES7 и нарушит ли она ориентацию на ES5 в качестве скомпилированного вывода из TypeScript?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Просто обновите свою строку - let y = {c, ...x}; с помощью const {c, ...noC} = x;.Таким образом, ваш код будет -

const x = {a:1, b:2, c:3};
const {c, ...noC} = x;

console.log(noC);

Предложение: Рекомендуется делать константу x постоянной, если вы не собираетесь обновлять ее позже.

0 голосов
/ 19 декабря 2018

Заказ будет таким:

let { c, ...y} = x;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...