Javascript 如何解构对象并排除属性?

Javascript 如何解构对象并排除属性?,javascript,angular,typescript,ecmascript-2016,Javascript,Angular,Typescript,Ecmascript 2016,我想解构一个对象并排除一个属性 这就是我现在正在做的: 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}); 以上在Angular 7中不起作用,我得到以下错误: error TS2663:

我想解构一个对象并排除一个属性

这就是我现在正在做的:

 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});

以上在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的编译输出

let { c, ...y} = x;

只需更新您的行-
让y={c,…x}
常数{c,…noC}=x。所以你的代码是-

constx={a:1,b:2,c:3};
常数{c,…noC}=x;

控制台日志(noC)我的节日礼物:)为了完整起见,如果对象的属性不是有效的JavaScript标识符,例如“x-http-header”,只需将其映射到有效的标识符即可。示例
const{'x-http-header':omit,…include}=headers
。在函数中,对象键必须用方括号括起来:
const-omit=(obj:T,key:K):omit=>{const{[key]:omit,…keep}=obj;返回keep}