我正在寻找TypedArray在d.ts文件中声明泛型类型的方法。TypedArray由于某种原因似乎不存在,但我在建议使用的地方遇到了评论ArrayLike<T>。这仍然是最佳解决方案吗?
我可以猜出是什么ArrayLike,但是是否有任何文档?谷歌搜索和搜索Typescript网站并没有太多。
编辑:我只是注意到类型化的数组构造函数被声明为以ArrayLike作为第一个参数,因此这表明这是正确的方法。
我不确定我是否正确理解你的问题,但以下实例化适用于 TypeScript 1.6(撰写本文时的最新稳定版本):
let t01 = new Uint8Array([1, 2, 3, 4]);
let t02 = new Int8Array([1, 2, 3, 4]);
let t03 = new Uint8Array([1, 2, 3, 4]);
let t04 = new Uint8ClampedArray([1, 2, 3, 4]);
let t05 = new Int16Array([1, 2, 3, 4]);
let t06 = new Uint16Array([1, 2, 3, 4]);
let t07 = new Int32Array([1, 2, 3, 4]);
let t08 = new Uint32Array([1, 2, 3, 4]);
let t09 = new Float32Array([1.5, 2.5, 3.5, 4.5]);
let t10 = new Float64Array([1.5, 2.5, 3.5, 4.5]);
let arrayBuffer = new ArrayBuffer(16);
Run Code Online (Sandbox Code Playgroud)
(带有先前脚本的 TypeScript 游乐场,MDN 文档)
您可以看到类型化数组位于es6.d.ts文件中:
/**
* A typed array of 8-bit integer values. The contents are initialized to 0. If the requested
* number of bytes could not be allocated an exception is raised.
*/
interface Int8Array {
/**
* Returns an array of key, value pairs for every entry in the array
*/
entries(): IterableIterator<[number, number]>;
/**
* Returns an list of keys in the array
*/
keys(): IterableIterator<number>;
/**
* Returns an list of values in the array
*/
values(): IterableIterator<number>;
[Symbol.iterator](): IterableIterator<number>;
}
Run Code Online (Sandbox Code Playgroud)
这就是你所追求的吗?
编辑:
interface ArrayLike<T> {
length: number;
[n: number]: T;
}
Run Code Online (Sandbox Code Playgroud)
并可迭代为
interface Iterable<T> {
[Symbol.iterator](): Iterator<T>;
}
Run Code Online (Sandbox Code Playgroud)
这是与您的函数非常相似的函数的定义方式:
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;
}
Run Code Online (Sandbox Code Playgroud)
所以我将你的函数定义为:
function foo(arrayLike: ArrayLike<number> | Iterable<number>) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4245 次 |
| 最近记录: |