使用非有效变量名称的属性名称进行对象解构

kea*_*ano 18 destructuring typescript ecmascript-6

有谁知道你是否可以在属性名称中使用带空格的对象解构?也许这不能做,我意识到JavaScript表示法不正确,但我无法更改服务器json响应.

var obj1 = {name: 'Mr Smith', age: 21};
//destructure
var {name, age} = obj1;
//name='Mr Smith' and age=21
Run Code Online (Sandbox Code Playgroud)

这按预期工作.

但是,当我有以下对象结构时,我可以使用对象解构吗?

var obj2 = {"my name": "Mr Jones", age: 22};
var {'my name', age} = obj2; 
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的话,如果我可以使用某种语法(例如'as')分配变量,这将是很好的...

var {'my name' as name, age} = obj2; //name='Mr Jones';
Run Code Online (Sandbox Code Playgroud)

谢谢

Dav*_*ret 23

您可以使用以下语法为其分配有效的变量名称:

var {"my name": myName, age} = obj2; 

// use myName here
Run Code Online (Sandbox Code Playgroud)


Ber*_*rgi 6

当我在属性名称中有一个带空格的对象时,我可以使用对象解构吗?

是的,您可以使用解构,但您始终只能分配标识符(变量名称).由于那些不允许使用空格,因此您无法使用属性名称和标识符相同的简写语法.

如果我可以使用某种语法(例如'as')分配变量,那将是很好的:

var {'my name' as name, age} = obj2;
Run Code Online (Sandbox Code Playgroud)

as用于模块导入/导出.对于普通对象 - 文字和解构 - 你使用冒号::

var {'my name': name, age} = obj2;
Run Code Online (Sandbox Code Playgroud)