ES15:Record存储数组、Tuple存储对象是否合法?
Record与Tuple定义合法性解答
1. 给定Record定义的合法性判断
先看你提供的代码:
const user = #{ name: "Avyukt", age: 39, hobbies: ['sleeping', 'eating', 'crying'] // 是否可添加数组 }
这个定义不合法。Record作为不可变数据结构,要求所有属性值只能是*原始值(字符串、数字、布尔值、null、undefined、Symbol)*或者其他Record/Tuple类型。而代码中的hobbies是普通数组——属于可变引用类型,内部元素可被修改,不符合Record对不可变值的约束,无法通过语法校验。
2. 给定Tuple定义的合法性判断
再看你提供的Tuple代码:
const user = #[ { name: "Avyukt", age: 1 }, // 是否可添加对象作为值 { name: 'Reyansh', age: 5 } ]
这个定义不合法。Tuple同样是不可变数据结构,其元素必须是原始值或者Record/Tuple类型。代码中的元素是普通对象——属于可变引用类型,对象的属性值可被修改,违背了Tuple的不可变设计原则,不符合语法要求。
内容的提问来源于stack exchange,提问作者Himanshu Gupta
相关产品推荐
相关产品推荐

