侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

typescript - ArrayBuffer

barwe
2021-10-27 / 0 评论 / 1 点赞 / 1,709 阅读 / 1,068 字
温馨提示:
本文最后更新于 2023-06-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

ArrayBuffer

ArrayBuffer对象是对任意数据类型数组的原始二进制数据的引用。该对象不能进行读写操作,但是可以传递给一个确定类型的数组或者DataView对象进行操作。

ArrayBufferTypes

ArrayBufferTypes接口在不同的版本中可能定义方式不同,例如:

/** lib.es5.d.ts */
interface ArrayBufferTypes {
    ArrayBuffer: ArrayBuffer;
}

/** es2017.sharedmemory.d.ts */
interface ArrayBufferTypes {
    SharedArrayBuffer: SharedArrayBuffer;
}

ArrayBufferLike

如果一个程序中同时包含了关于ArrayBufferTypes接口的两种声明,我们可以通过keyof操作符进行类型合并:

type ArrayBufferLike = ArrayBufferTypes[keyof ArrayBufferTypes]

// 如果程序中只有第一个接口声明,相当于
type ArrayBufferLike = ArrayBuffer

// 如果程序中只有第二个接口声明,相当于
type ArrayBufferLike = SharedArrayBuffer

// 如果程序中两种接口声明都有,相当于
type ArrayBufferLike = ArrayBuffer | SharedArrayBuffer

// 如果程序中还存在第三种接口声明,以此类推

这样,我们通过在不同的情况下为ArrayBufferTypes接口声明不同的内容,然后将其所有声明进行合并,最终目的是为了实现ArrayBufferLike接口的动态兼容。

ArrayBufferView

interface ArrayBufferView {
    // 数组对象 (ArrayBufferLike) 的引用
    buffer: ArrayBufferLike;
    // 数组的字节长度
    byteLength: number;
    // 数组的字节偏移量
    byteOffset: number;
}

该类型是 TypeScript 提供的一个辅助类型,可以用来表示任意一个整数类型的数组,例如Int8Array, Uint8Array, Float64Array等。ArrayBufferView只用来简化规范,它没有任何的额外实现。

BufferSource

type BufferSource = ArrayBufferView | ArrayBuffer;

BufferSource对象是对任意类型的数组的原始数据的引用。

1

评论区