ES6动态解构

bde*_*dev 2 javascript typescript ecmascript-6

我需要根据全局标志[多个应用程序的单个服务]对函数响应应用不同的解构

// Destructuring template should be defined as value
let destructuringTemplate;
if (flag) {
   destructuringTemplate = {data: {classA: user}};
} else {
   destructuringTemplate = {data: {classB: user}};
}
// This technique would not work, this is just my idea representation.
this.getUser(({destructuringTemplate: user) => { this.localUser = user });
Run Code Online (Sandbox Code Playgroud)

此时它以这种方式工作:

let destructuringTemplate;
if (flag) {
   destructuringTemplate = ({data: {classA: user}}) => user;
} else {
   destructuringTemplate = ({data: {classB: user}}) => user;
}
this.getUser(response => { this.localUser = destructuringTemplate(response)};
Run Code Online (Sandbox Code Playgroud)

它有点难看,有人建议怎么做?

Nin*_*olz 5

您可以将计算属性名称条件(三元)运算符一起使用?:.

var flag = true,
    object = { data: { classA: 'foo', classB: 'bar' } },
    { data: { [flag ? 'classA' : 'classB']: user } } = object,
    { data: { [!flag ? 'classA' : 'classB']: user1 } } = object;

console.log(user);
console.log(user1);
Run Code Online (Sandbox Code Playgroud)