TypeScript:用于类型化数组的“ TypedArray”接口

时间:2018-12-25 21:56:39

标签: typescript typed-arrays

如何告诉TypeScript给定参数包含Typed Arrays之一?

能够选择最适合您需要的类型化数组的类型并不罕见(例如Flatbush库做到了这一点)。

我想检查传递到构造函数中的内容是否确实标识了类型化数组之一。但是在我的lib.es6.d.ts中,没有一个类型化数组都继承自公共接口。

相关问题:“ ArrayLike”接口用于什么?

3 个答案:

答案 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;

要回答第二个问题:并非浏览器中使用的每个集合都是通过适当的数组实现的。诸如NodeListOfAggregateError之类的某些数据结构在其上具有不同的方法,但具有一个相似之处-它们可以通过数字索引。您可以将ArrayLike视为用于描述此类对象的抽象类型。