gpt4 book ai didi

typescript - 用 ArrayLike 声明 TypedArray?

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:45 24 4
gpt4 key购买 nike

我正在寻找一种方法来声明通用 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);

( TypeScript playground with the previous script , MDN documentation )

您可以看到类型化数组在 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>;
}

这就是你想要的吗?

编辑:

lib.es6.d.ts 定义 ArrayLike (参见 JavaScript 中类数组的 definition)作为:

interface ArrayLike<T> {
length: number;
[n: number]: T;
}

Iterable作为

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>) { ... }

关于typescript - 用 ArrayLike 声明 TypedArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33332231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com