如何告诉TypeScript给定参数包含Typed Arrays之一?
能够选择最适合您需要的类型化数组的类型并不罕见(例如Flatbush库做到了这一点)。
我想检查传递到构造函数中的内容是否确实标识了类型化数组之一。但是在我的lib.es6.d.ts中,没有一个类型化数组都继承自公共接口。
相关问题:“ ArrayLike”接口用于什么?
答案 0 :(得分:2)
typescript没有TypedArray
接口,但是像建议here一样,您可以使用ArrayBufferView,它是所有类型数组的超类型。
答案 1 :(得分:1)
根据@tobenna's answer,如果您不满意使用ArrayBufferView
,则唯一的选择是创建自己的TypedArray
界面。
type TypedArray =
| Int8Array
| Uint8Array
| Uint8ClampedArray
| Int16Array
| Uint16Array
| Int32Array
| Uint32Array
| Float32Array
| Float64Array;
注意:与ArrayBufferView
方法不同,此方法排除了DataView
个对象。
最后,ArrayLike
接口用于可以用数字索引并具有长度的所有内容。其中包括DOM NodeList
之类的东西,其中不包含Array
原型中的大多数方法。
答案 2 :(得分:1)
没有内置别名,但是您可以根据lib.es2017.typedarrays.d.ts
中的类型自己创建一个别名。
type TypedArray =
| Int8Array
| Uint8Array
| Uint8ClampedArray
| Int16Array
| Uint16Array
| Int32Array
| Uint32Array
| Float32Array
| Float64Array;
要回答第二个问题:并非浏览器中使用的每个集合都是通过适当的数组实现的。诸如NodeListOf
或AggregateError
之类的某些数据结构在其上具有不同的方法,但具有一个相似之处-它们可以通过数字索引。您可以将ArrayLike
视为用于描述此类对象的抽象类型。