Typescript 用ArrayLike声明TypedArray?

Typescript 用ArrayLike声明TypedArray?,typescript,Typescript,我在寻找一种在d.ts文件中声明泛型TypedArray类型的方法TypedArray似乎出于某种原因不存在,但我在某处遇到一条评论,建议使用ArrayLike。这仍然是最好的解决方案吗 我可以猜一下什么是ArrayLike,但是有相关文档吗?谷歌搜索Typescript网站的结果并不多 编辑:我刚刚注意到类型化数组构造函数被声明为将ArrayLike作为第一个参数,因此这表明这是正确的方法。我不确定是否正确理解了您的问题,但以下实例化在TypeScript 1.6(撰写本文时最新的稳定版本)中

我在寻找一种在d.ts文件中声明泛型
TypedArray
类型的方法
TypedArray
似乎出于某种原因不存在,但我在某处遇到一条评论,建议使用
ArrayLike
。这仍然是最好的解决方案吗

我可以猜一下什么是
ArrayLike
,但是有相关文档吗?谷歌搜索Typescript网站的结果并不多


编辑:我刚刚注意到类型化数组构造函数被声明为将ArrayLike作为第一个参数,因此这表明这是正确的方法。

我不确定是否正确理解了您的问题,但以下实例化在TypeScript 1.6(撰写本文时最新的稳定版本)中工作:

(,)

您可以在文件中看到类型化数组:

/**
*8位整数值的类型化数组。内容已初始化为0。如有要求,
*无法分配字节数。引发异常。
*/
接口Int8Array{
/** 
*返回数组中每个项的键、值对数组
*/
entries():IterableIterator;
/** 
*返回数组中键的列表
*/
keys():IterableIterator;
/** 
*返回数组中的值列表
*/
values():IterableIterator;
[Symbol.iterator]():IterableIterator;
}
这就是你想要的吗

编辑:

lib.es6.d.ts将(参见JavaScript中数组的定义)定义为:

类接口阵列{
长度:数字;
[编号]:T;
}
作为

interface-Iterable{
[Symbol.iterator]():迭代器;
}
这就是如何定义与您非常相似的函数:

interface Uint8ArrayConstructor {

    //
    // ...
    // 

    /**
      * Creates an array from an array-like or iterable object.
      * @param arrayLike An array-like or iterable object to convert to an array.
      * @param mapfn A mapping function to call on every element of the array.
      * @param thisArg Value of 'this' used to invoke the mapfn.
      */
    from(arrayLike: ArrayLike<number> | Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
}
接口Uint8ArrayConstructor{
//
// ...
// 
/**
*从类似数组或可编辑对象创建数组。
*@param arrayLike类似于数组的对象或可转换为数组的对象。
*@param mapfn调用数组中每个元素的映射函数。
*@param thisArg“this”的值用于调用mapfn。
*/
from(arrayLike:arrayLike | Iterable,mapfn?:(v:number,k:number)=>number,thisArg?:any):Uint8Array;
}
因此,我将您的函数定义为:

function foo(arrayLike: ArrayLike<number> | Iterable<number>) { ... }
函数foo(arrayLike:arrayLike | Iterable){…}

谢谢。我想写一个函数来获取TypedArray或数组参数。例如:
函数foo(a:ArrayLike){…
。看起来我应该使用
Iterable
。但是使用Atom,如果我将鼠标悬停在
newfloat32array(a)
上,它会说构造函数采用
ArrayLike
。我编辑了我的答案。也许这有助于你了解更多。
interface ArrayLike<T> {
    length: number;
    [n: number]: T;
}
interface Iterable<T> {
    [Symbol.iterator](): Iterator<T>;
}
interface Uint8ArrayConstructor {

    //
    // ...
    // 

    /**
      * Creates an array from an array-like or iterable object.
      * @param arrayLike An array-like or iterable object to convert to an array.
      * @param mapfn A mapping function to call on every element of the array.
      * @param thisArg Value of 'this' used to invoke the mapfn.
      */
    from(arrayLike: ArrayLike<number> | Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
}
function foo(arrayLike: ArrayLike<number> | Iterable<number>) { ... }