前端技术回顾系列 10|TS 泛型在类和接口中的应用

在微信中阅读,关注公众号:CodeFit

创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞分享关注 我的公众号:CodeFit,为我的持续创作提供动力。

上文回顾:约束泛型(Generic Constraints)

上一篇文章我们回顾了 泛型TypeScript 中的高级用法 —— 泛型约束

通过 extends 关键字,我们可以确保传入的类型具有 特定 的属性或方法。

这样可以提高代码的类型 安全性灵活性,使得 泛型 不仅可以是 任意 类型,还可以是某些 特定 属性或方法的类型。

泛型在类和接口中的应用

之前的 泛型 内容侧重于在 函数 中的使用。

本文会更多地看看 泛型接口 中的应用。

大纲

  1. 问题引入:队列的实现
  2. 使用泛型改进队列类
  3. 泛型在接口中的应用
  4. 定义泛型接口
  5. 泛型数组
  6. 总结

1. 问题引入:队列的实现

假设我们要通过 来实现一个 队列,这个类需要两个方法:

  • push 用于将元素加入队列。
  • pop 用于将元素从队列中移出。

队列 是一种 数据结构,特点是 先进先出

首先,我们来实现一个 没有 使用 泛型队列类

class Queue {
   
  private data: any[] = [];

  push(item: any): void {
   
    this.data.push(item);
  }

  pop(): any {
   
    return this.data.shift();
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/706567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp开发微信小程序预加载分包

微信小程序分包是一种优化小程序项目结构和性能的方式。它允许开发者将小程序代码包拆分成多个子包,在用户需要时动态加载这些子包,从而减少小程序的首次加载时间和主包的体积。(总体积不得大于20M,主包(共同文件静态资…

nest : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\nest.ps1,因为在此系统上禁止运行脚本。

完整报错: nest : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\nest.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkI D135170 中的 about_Execution_Policies。 问题原因: …

Ubuntu基础-vim编辑器

目录 前言: 一. 安装 二. 配置 三. 基本使用 1.使用 Vim 编辑文本文件 2.代码编辑 3.多窗口编辑 四. 总结 前言: Vim 是从 VI 发展出来的一个文本编辑器,具有代码补充、错误跳转等功能,在程序员中被广泛使用。它的设计理念是命令的组合&#xff…

Django后台忘记管理员的账号

使用命令启动项目: python manage.py runserver输入后缀/admin,进入后台管理员,如果此时忘记你先前设置的用户名与密码怎么办? 终端输入: python manage.py shell 输入以下内容,并查看返回结果&#xff…

ASM字节码插桩实现点击防抖

思路:在点击事件onclick的时候,将view的onclick在给定的时间给拦截掉。以前我们可能都是用一个util来拦截,这样在每个点击事件都得去判断,那么这里就用字节码插桩的形式来实现一下。 ASM的引入 dependencies {implementation gr…

【因果推断python】31_合成控制1

目录 一个了解无从知晓事情的超酷数学技巧 我们有时间 一个了解无从知晓事情的超酷数学技巧 当我们审视双重差分法时,我们有来自 2 个不同城市的多个客户的数据:阿雷格里港和弗洛里亚诺波利斯。数据跨越 2 个不同的时间段:在阿雷格里港进行…

关于头条项目经验面试题的总结

文章目录 前言一、论坛项目经典话术二、请你介绍一下你最近的项目吧2.1 话术1 三、你的公司的开发环境是怎么搭建的?四、登录你们是怎么做的?4.1 账号密码登录4.2 手机验证码发送4.2.1 手机验证码发送4.2.2 手机验证码登录 五、用户行为限流是怎么做的&a…

oracle 删除当前用户下所有表

荆轲刺秦王 通常呢 我们将正式环境的 oracle 数据库 导出成 dmp 文件,然后导入到测试环境或者本地环境,期间可能会出现各种问题。那么如何使错误的导入数据全部删除呢。可以这样做: 1. 本地虚拟机启动 oracle 服务 2. sqldeveloper 连接 o…

数据桥梁:无缝连接信息孤岛与分析前沿

在数字化浪潮席卷全球的今天,数据已成为推动社会进步和经济发展的重要力量。然而,在实际应用中,我们常常遇到的一个挑战是如何将分散、孤立的数据资源进行有效整合,打破“信息孤岛”,实现数据的无缝连接和高效利用。本…

【智能算法应用】基于粒子群算法的多尺度Retinex图像去雾方法

目录 1.算法原理2.粒子群算法的多尺度Retinex图像去雾方法3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】粒子群算法(PSO)原理及实现 多尺度Retinex算法 在Retinex算法中,雾化图像的形成可以总结为入射光和反射光的乘积: I ( x…

开源可二次开发的商城小程序源码系统源码 前后端分离 附带完整的安装包以及搭建部署教程

系统概述 本开源商城小程序源码系统是基于现代Web开发技术栈打造的一套高性能、易扩展的电商解决方案。它采用了前后端分离的设计模式,前端使用Vue.js或React等主流框架构建用户界面,后端则采用Node.js/Express、Spring Boot等技术栈处理业务逻辑与数据…

QT调用vs2019生成的c++动态库

QT调用vs2019生成的c动态库 dll库的创建方法: VS2019创建c动态链接库dll与调用方法-CSDN博客 加减法示范: 头文件 // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL3_EXPORTS // 符号编…

Linux Debian12使用podman安装xss-labs靶场环境

一、xss-labs简介 xss-labs靶场是一个专门用于学习和练习跨站脚本攻击(XSS)技术的在线平台。它提供了一系列的实验场景和演示,帮助安全研究人员、开发人员和安全爱好者深入了解XSS攻击的原理和防御方法。 二、安装podman环境 Linux Debian…

LVS/NAT负载均衡实操

添加规则,并做持久操作 1 添加规则 [rootlvs ~]# ipvsadm -A -t 10.36.178.183:80 -s wrr [rootlvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.201:80 -m -w 3 [rootlvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.202:80 -m -w 1[rootlvs ~]# ipvsadm -Ln …

第2章 Rust初体验4/8:提供标准库之外功能的Library Crate:简化包管理和依赖管理:猜骰子冷热游戏

讲动人的故事,写懂人的代码 2.4 故事2: 生成点数之和的随机答案 又是新的一天,大家的培训课又开始了哦!现在,我们的学员们开始用三种语言来实现故事2,加油! 2.4.1 Rust版故事2 2.4.1.1 提供标准库之外功能的Library Crate:简化包管理和依赖管理 贾克强:“我们的故事…

【JVM】JVisualVM的介绍、使用和GC过程

VisualVM介绍 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几…

30 岁的程序员,要有 “归零“ 心态

大家好,我是码农先森。 古话说的 “三十而立”,正是担重之时,却大部分人在职场中都处于不上不下的尴尬境地。已经没有刚毕业时那股子冲劲,被生活和工作磨平了棱角。 在技术思想方面,似乎已经触及到了天花板&#xff…

阻容感的串联和并联

文章目录 电阻的串联电容的串联 电阻的串联 电容的串联 CC1C2/(C1C2) 串联后电容反而变小了,所以实际应用中,电容不串联(我没见过电容串联使用的) 类似于电导的分压, 电容一般是并联使用 电感一般串联使用

鸿蒙轻内核调测-内存调测-内存泄漏检测

1、基础概念 内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到…

MNIST手写字符分类

MNIST手写字符分类 文章目录 MNIST手写字符分类1 数据集2 模型构建3 训练4 模型保存5 推理6 模型导出7 导出模型测试 1 数据集 MNIST手写字符集包括60000张用于训练的训练集图片和10000张用于测试的测试集图片,所有图片均归一化为28*28的灰度图像。其中字符区域为白…