export type TypedArrayConstructor = | SignedTypedArrayConsturctor | UnsignedTypedArrayConstructor export type SignedTypedArrayConsturctor = | Int8ArrayConstructor | Int16ArrayConstructor | Int32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor export type UnsignedTypedArrayConstructor = | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor export type TypedArray = | SignedTypedArray | UnsignedTypedArray export type SignedTypedArray = | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array export type UnsignedTypedArray = | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array export type TypedArrayOfConstructor = T extends Int8ArrayConstructor ? Int8Array : T extends Uint8ArrayConstructor ? Uint8Array : T extends Uint8ClampedArrayConstructor ? Uint8ClampedArray : T extends Int16ArrayConstructor ? Int16Array : T extends Uint16ArrayConstructor ? Uint16Array : T extends Int32ArrayConstructor ? Int32Array : T extends Uint32ArrayConstructor ? Uint32Array : T extends Float32ArrayConstructor ? Float32Array : T extends Float64ArrayConstructor ? Float64Array : never export type ConstructorOfTypedArray = T extends Int8Array ? Int8ArrayConstructor : T extends Uint8Array ? Uint8ArrayConstructor : T extends Uint8ClampedArray ? Uint8ClampedArrayConstructor : T extends Int16Array ? Int16ArrayConstructor : T extends Uint16Array ? Uint16ArrayConstructor : T extends Int32Array ? Int32ArrayConstructor : T extends Uint32Array ? Uint32ArrayConstructor : T extends Float32Array ? Float32ArrayConstructor : T extends Float64Array ? Float64ArrayConstructor : never