16.新原始数据类型Record Tuple
# 写法
// Records
const myRecord = #{
name: '01',
age: 23
}
// Tuple
const myTuple = #['1', '2', '3']
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- Record 和 Tuple 都只支持基本数据类型或 Record/Tuple 类型
- Record 对象的键值只能是 string 类型,这一特性和 Object 保持一致,
- 注意它的使用只不过在 Object 或者 Array 前面加了个 #(注意不要有空格) 就自动识别成 Record 或 Tuple 了,在数据类型变量前面加一个能不能行呢,比如:
let iObj = {name:'sam'}
const rObj = #iObj // SyntaxError: unknown operate
1
2
2
直接报错
# 只读不能直接改
const myRecord = #{
name: '01'
}
const myTuple = #['1', '2']
myRecord['age'] = 23 // error
myTuple.push('3') // error
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 可以用 === 判断
const record1 = #{ name: '01' }
const record2 = #{ name: '01' }
const recordIsSame = record1 === record2 // true
const tuple1 = #[1]
const tuple2 = #[1]
const tupleIsSame = tuple1 === tuple2 // true
1
2
3
4
5
6
7
2
3
4
5
6
7
键值对的排序不影响判断
let obj1 = #{name:'sam',age:24}
let obj2 = #{age:24, name:'sam'}
console.log(obj1 === obj2) // true
1
2
3
2
3
# 支持的方法
扩展运算符,数组支持不可变方法,包括toSorted,toSpliced,toReversed, slice, with
const myTuple = #[1, 2, 3];
const myRecord = #{ name: '01', age: 23 };
const newRecord = #{ ...myRecord, money: 0 } // #{ name: '01', age: 23, money: 0 }
const newTuple = #[ ...myTuple, 4, 5]; // #[1, 2, 3, 4, 5]
1
2
3
4
5
2
3
4
5
- 01
- 2023/07/03 00:00:00
- 02
- 2023/04/22 00:00:00
- 03
- 2023/02/16 00:00:00