Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在类型记录中扩展类型化数组类

在类型记录中扩展类型化数组类
EN

Stack Overflow用户
提问于 2022-09-15 16:14:45
回答 2查看 44关注 0票数 1

我想在类型记录中扩展Javascript类型的数组。具体来说,我想从一个常规的Uint8Array开始,然后用1(而不是普通类型化数组中的0)初始化它,并添加一些额外的方法。我希望这样做,以便常规的类型数组实例化方法不会抛出类型错误,例如new SpecialArray([1, 2, 3])new SpecialArray(3)都应该像预期的那样工作。

我有这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SpecialArray extends Uint8Array {

   constructor(arg: number | number[]) {
      super(arg)
      this.fill(1)
   }
   
   ...

}

但是,类型记录会引发以下有关arg的错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
No overload matches this call.
  The last overload gave the following error.
    Argument of type 'number | number[]' is not assignable to parameter of type 'ArrayBufferLike'.
      Type 'number' is not assignable to type 'ArrayBufferLike'.ts(2769)

我发现我可以通过在对超级的调用中使用类型断言来解决这个问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
super(arg as unknown as ArrayBufferLike)

然而,这感觉很混乱。有什么干净的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-15 16:29:30

或者更简单地说,使用内置的ConstructorParameters类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SpecialArray extends Uint8Array {
   constructor(...args: ConstructorParameters<typeof Uint8Array>) {
      super(...args)
      this.fill(1)
   }
}

游乐场

票数 3
EN

Stack Overflow用户

发布于 2022-09-15 16:26:32

这个错误给出了一个很好的提示。没有任何版本的Uint8Array具有接受number | number[]的构造函数。

试一试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SpecialArray extends Uint8Array {
  constructor(array: ArrayLike<number> | ArrayBufferLike) {
    super(array);
    this.fill(1)
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73738580

复制
相关文章
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
TypeScript 是一种由微软开发的静态类型编程语言,它是 JavaScript 的超集,并且可以在编译时进行类型检查。TypeScript 强大的类型系统使得开发者能够更轻松地编写可维护、可扩展的代码。本文将详细介绍 TypeScript 中的基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型。
网络技术联盟站
2023/07/06
8320
Python中的数组类型
Python没有提供内置的数组类型,但是通过标准库array提供了array类支持数组的创建与使用,可以创建的数组类型包括整数、实数、Unicode字符等等,可以使用help()函数查看更完整的类型列表。 >>> from array import array >>> s = "Hello world" >>> sa = array('u', s) #创建可变字符串对象 >>> print(sa) array('u', 'Hello world') >>> print(sa.tostring())
Python小屋屋主
2018/04/16
3.9K0
【C 语言】数组 ( 数组类型表达 | 定义数组类型 )
int array[10] 的数据类型是 int [10] , 其中 int 是元素类型 , [10] 是元素个数 ;
韩曙亮
2023/03/29
1.7K0
【C 语言】数组 ( 数组类型表达 | 定义数组类型 )
TypeScript 中的数组类型定义
在 TypeScript 中声明和初始化数组也很简单,和声明数字类型和字符串类型的变量也差不多,只不过在指定数组类型时要在类型后面加上一个中括号 []
Qwe7
2022/03/19
5.4K0
在Salesforce中动手创建页面布局和记录类型
通过官方的工作册和教程来学习Salesforce很好,但对于我个人来讲我很难抽出时间去看这些材料,因为它不是我的公司的需求,并且从中学到的并不是我在日常工作中可以使用的东西。
臭豆腐
2019/04/16
2.5K0
在Salesforce中动手创建页面布局和记录类型
Go复合类型之数组类型
如果两个数组类型的元素类型 T 与数组长度 N 都是一样的,那么这两个数组类型是等价的,如果有一个属性不同,它们就是两个不同的数组类型。下面这个示例很好地诠释了这一点:
贾维斯Echo
2023/10/18
2370
Go复合类型之数组类型
SystemVerilog数组类型
1.动态数组 SV提供了可以重新确定大小的动态数组; 动态数组在声明时需要使用中括号[],表示不会在编译时为其定制尺寸,而在仿真运行时确定; 动态数组一开始的元素个数为空,需要使用new[]来分配空间; int dyn [], d2[]; //声明动态数组 initial begin dyn=new[5]; //分配5个元素 foreach (dyn[j]) dyn[j] =j; //对元素进行初始化 d2=dyn; //复制一个动态数组 d2[0]=5; //修改复制
数字芯片社区
2020/07/20
3.9K0
TypeScript数组类型
类型+方括号 在我们创建数组的时候同样我们可以定义数组内数据的类型,如下所示 var arr:number[]=[1,2,3] var arr2:string[]=["1","2","3"] var arr3:any[]=[1,"2",true] 泛型Array<T> 如下代码所示我们可以以泛型的方式进行创建数组 var arrType:Array<number>=[1,2,3] var arrType1:Array<string>=["1","2","3"] var arrType2:Array<any>
HueiFeng
2020/04/09
8420
5.2 数组类型
在着色程序中,数组通常的使用目的是:作为从外部应用程序传入大量参数到 Cg 的顶点程序中的形参接口,例如与皮肤形变相关的矩阵数组,或者光照参数数组等。
代码咖啡
2018/08/28
4080
TypeScript数组类型
[类型+方括号] 在我们创建数组的时候同样我们可以定义数组内数据的类型,如下所示 var arr:number[]=[1,2,3] var arr2:string[]=["1","2","3"] var arr3:any[]=[1,"2",true] 泛型Array<T> 如下代码所示我们可以以泛型的方式进行创建数组 var arrType:Array<number>=[1,2,3] var arrType1:Array<string>=["1","2","3"] var arrType2:Array<an
HueiFeng
2020/04/10
1.2K0
【原创】JAVA数值类型强制类型转换扩展
 经常需要将一些数值类型转换为另外一种数值类型。下图给出了数值类型之间的合法转换。
零点
2023/10/18
1750
【原创】JAVA数值类型强制类型转换扩展
C++中的数组类型操作
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
鲸落c
2022/11/28
1.5K0
python里[::-1]_python中的数组类型
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:len(alist)]
全栈程序员站长
2022/09/22
1.5K0
39. Groovy 类型检查扩展,最终篇 高级类型检查扩展
本篇内容为Groovy类型检查扩展的最终篇。高级类型检查扩展。本篇结束后,关于Groovy中的类型检查扩展的相关知识就分享结束了。
zinyan.com
2023/02/23
9520
39. Groovy 类型检查扩展,最终篇 高级类型检查扩展
三、DNS记录类型
区域文件是名称服务器存储其所知道的域名的信息的方式。名称服务器知道的每个域名都存储在区域文件中。对于名称服务器来说,大多数请求都不能在它自己服务器中找到区域文件。
咻一咻
2020/05/29
5.3K0
Dictionary 字典类型记录
Dictionary 是一个很好的类型,可以不断增加.例如: Dictionary<string, string> data_str = new Dictionary<string, string>(); data_str.Add("aaa","ccc"); data_str.Add("BBB", "EEE"); data_str.Add("CCC", "FFF");也可以这种方式。。Dictionary<string, int>
谭广健
2019/04/16
7220
Dictionary 字典类型记录
DNS记录类型分析
DNS:Domain Name System 域名管理系统 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统。DNS:Domain Name Server 域名服务器 域名虽然便于人们记忆,但网络中的计算机之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器。 查看DNS更详细的解释
用户8418197
2021/12/26
3.1K0
CA1058:类型不应扩展某些基类型
System.Collections.ReadOnlyCollectionBase
呆呆
2022/01/10
3470
攀爬TS之路(三) 数组类型、元组类型
数组就是一个特殊的对象,它的键是数字,且是从0开始。所以我们也可以使用接口来表示数组。
赤蓝紫
2023/03/16
5450
攀爬TS之路(三)    数组类型、元组类型
数组类型原子类
上面三个类提供的方法几乎相同,所以这里以 AtomicIntegerArray 为例子来介绍。
happyJared
2019/07/22
4950

相似问题

类型记录数组类型扩展了基数组类型。

15

在类型记录中,扩展类类型不能分配给基类类型。

210

在类型记录注释中动态扩展类

10

类型记录引用扩展类

20

类型记录-扩展错误类

86
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文