如何解构一个对象并排除一个属性?
How to deconstruct an object and exclude a property?
我想解构一个对象并排除一个属性。
这就是我现在正在做的事情:
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 的编译输出?
顺序应该是这样的
let { c, ...y} = x;
只需将您的行 - let y = {c, ...x};
更新为 const {c, ...noC} = x;
。所以你的代码是 -
const x = {a:1, b:2, c:3};
const {c, ...noC} = x;
console.log(noC);
建议:如果您以后不打算更新它,最好将 x
设为常量。
我想解构一个对象并排除一个属性。
这就是我现在正在做的事情:
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 的编译输出?
顺序应该是这样的
let { c, ...y} = x;
只需将您的行 - let y = {c, ...x};
更新为 const {c, ...noC} = x;
。所以你的代码是 -
const x = {a:1, b:2, c:3};
const {c, ...noC} = x;
console.log(noC);
建议:如果您以后不打算更新它,最好将 x
设为常量。