在TypeScript中为参数指定合法TypedArray构造函数类型的方法
在TypeScript中指定TypedArray构造函数的类型
你可以通过定义匹配TypedArray构造签名的类型来约束TypedArrayConstructor参数,同时获得智能提示和类型检查能力。
步骤1:定义TypedArray构造函数类型
首先声明一个类型别名,匹配所有TypedArray构造函数的签名:
type TypedArrayConstructor = new (data: Iterable<number> | ArrayLike<number>) => TypedArray;
这个类型表示:接受数组或可迭代数字集合作为参数,返回TypedArray实例的构造函数。
步骤2:给函数添加类型标注
将函数的第二个参数指定为上述类型:
function createTypedArray( data: Iterable<number> | ArrayLike<number>, TypedArrayConstructor: TypedArrayConstructor ) { return new TypedArrayConstructor(data); }
验证效果
- 合法调用(正常通过):
const f32 = createTypedArray([1, 2, 3], Float32Array); const u8 = createTypedArray([4, 5, 6], Uint8Array);
输入第二个参数时,编辑器会自动推荐所有符合要求的TypedArray构造函数(比如Int16Array、Uint32Array等)。
- 非法调用(触发报错):
如果传入非TypedArray构造函数,TypeScript会抛出类型错误:
class NotTypedArray { constructor(...args: any[]) {} } const nta = createTypedArray([1, 2, 3], NotTypedArray); // 错误提示:类型“typeof NotTypedArray”的参数不能赋给类型“TypedArrayConstructor”的参数。 // 类型 “NotTypedArray” 不能赋给类型 “TypedArray”。
内容的提问来源于stack exchange,提问作者samanthaj
相关产品推荐
相关产品推荐

