TS 里的TypedArray详细介绍
时间: 2023-11-02 12:04:55 浏览: 204
`TypedArray` 是 JavaScript 中的一种类型化数组,用于表示通用的、固定长度的二进制数据缓冲区,并提供了一系列的读写方法。`TypedArray` 包括以下几种类型:
- `Int8Array`:8 位有符号整数数组。
- `Uint8Array`:8 位无符号整数数组。
- `Uint8ClampedArray`:8 位无符号整数数组(范围在 0~255 之间)。
- `Int16Array`:16 位有符号整数数组。
- `Uint16Array`:16 位无符号整数数组。
- `Int32Array`:32 位有符号整数数组。
- `Uint32Array`:32 位无符号整数数组。
- `Float32Array`:32 位浮点数数组。
- `Float64Array`:64 位浮点数数组。
使用 `TypedArray` 可以方便地读写二进制数据,而不需要手动计算字节偏移量。例如,以下代码将 `Int8Array` 和 `Uint8Array` 对象实例化,并设置和读取值:
```typescript
const int8Array = new Int8Array(4);
int8Array[0] = 1;
int8Array[1] = 2;
int8Array[2] = 3;
int8Array[3] = 4;
const uint8Array = new Uint8Array(4);
uint8Array[0] = 5;
uint8Array[1] = 6;
uint8Array[2] = 7;
uint8Array[3] = 8;
console.log(int8Array[0]); // 输出 1
console.log(uint8Array[0]); // 输出 5
```
需要注意的是,`TypedArray` 对象的构造函数需要传入一个 `ArrayBuffer` 对象或一个类数组对象作为参数。例如:
```typescript
const buffer = new ArrayBuffer(4);
const int8Array = new Int8Array(buffer);
const uint8Array = new Uint8Array(buffer);
```
在这个例子中,创建了一个长度为 4 的 `ArrayBuffer` 对象,然后分别使用 `Int8Array` 和 `Uint8Array` 将其包装成了视图对象。这两个视图对象共享同一个内存空间,因此修改其中一个视图对象的值,另外一个视图对象的值也会被修改。
阅读全文