- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在寻找一种方法来声明通用 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/
是否有任何方法可以将类似数组的对象转换为数组,以便可以使用所有数组方法?请参见此处: [].prototype.forEach.call("maizere",fn) 对于每个类似数组的对象也是如此,
我正在寻找一种方法来声明通用 TypedArray在 d.ts 文件中键入。 TypedArray由于某种原因似乎不存在,但我在某处看到一条建议使用 ArrayLike 的评论.这仍然是最佳解决方案吗
我最近发现了 ArrayLike界面 interface ArrayLike { length: number; [n: number]: T; } 我很难理解 [n:number]:
我在 const arr = new Uint8Array(fileReader.result).subarray(0, 4); 中得到一个错误 [ts],特别是在 fileReader.result
我是一名优秀的程序员,十分优秀!