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
对象是对任意类型的数组的原始数据的引用。
评论区