当前位置: 首页 > news >正文

【TypeScript学习】TypeScript基础学习总结二

主要记录ts中的类、接口与泛型

1.类

无论是在哪种语言中,类都是面向对象编程(OOP)的一个主要实现方式。能够实现代码更加灵活,更具有结构化。类作用都是提供一个模板,通过类可以创建多个具有相同结构的对象。

// 类的定义,与对象的声明
class Student {id: stringname: stringage: numberconstructor(id:string, name:string, age:number) { // 构造器this.id = idthis.name = namethis.age = age}speak() {console.log('I am a student, my name is' + this.name);}
}
let stu1 = new Student('0001','小王', 18)
let stu2 = new Student('0002','小刘', 19)
let stu3 = new Student('0003','小李', 20)
  • 类的继承
// 类的继承
class SeniorStudent extends Student { // 继承父类grade:stringconstructor(id:string, name:string, age:number,grade:string) {super(id, name, age) // 通过super把父类需要的参数传入this.grade = grade}override speak(): void { // 重写speak方法console.log('I am a senior student, I am '+ this.name + ', i am in grade '+this.grade);}
}
let sen1 = new SeniorStudent('0007', '小L', 18, '高三')
sen1.speak() // I am a senior student, I am 小L, i am in grade 高三
  • 类属性的修饰符

    • public:使用public修饰的成员属性或者成员方法既能在自身类中和子类调用也能在类外部调用;
    • private:使用private修饰的成员属性或者成员方法只能在自身类中调用;
    • protected:使用protect修饰的成员属性或者成员方法只能在自身类中和子类调用,不能在类外部调用;
    • readonly:使用readonly修饰的成员属性无法修改。
  • 抽象类和抽象方法

抽象类用abstract来修饰。抽象类的作用是为派生类提供一个基础结构,抽象类可以被继承不能被实例化。抽象类中的方法可以是抽象方法(用abstract修饰),也可以是普通方法。其中的抽象方法一定要被派生类实现。

// 抽象类
abstract class Cup{shape: string;price: number;private readonly resource: stringconstructor(shape:string, price:number, resource:string) {this.shape = shapethis.price = pricethis.resource = resource}getInfo() {console.log('Infos: shape is ' + this.shape+ 'resource is ' + this.resource + 'price is ' + this.price );}abstract changePrice(val:number): void //抽象函数不能够实现具体功能,只能声明参数你返回值
}class glassCup extends Cup {constructor(shape: string, price:number, resource:string, private volumn:number) {super(shape, price, resource)}changePrice(val: number): void {this.price = this.price - valconsole.log('the price change to ' + this.price);}
}

思考: 在实践这段代码的时候,我有个小想法。之前函数定义的方法有下面这种格式的,表示: 声明一个函数,函数名为countSum, 并且指定形参和形参类型,同时通过=>指定返回值类型。这种形式的函数声明也是一个声明方式,没有实际实现,那么我是否可以用这种方式来定义抽象类中的抽象方法呢?

    1. 我不知道abstract关键字加在哪
    1. 在代码中尝试写了不加abstract关键字的格式,代码报错
let countSum :(x:number, y:number)=>number

上面这种格式只适用于函数声明,不适用于类方法

2.接口

接口是用于规范类、函数、对象的结构。接口只能定义格式,不能像类一样被实现。通过关键词implement调用接口。

// 类
interface ComputerInterface {id: string;brand: string;exture: string;price: number;start(): void; // 可以规定要有这个函数,但是不能具体实现这个函数
}class ASUS implements ComputerInterface {constructor( // 类的简写形式,将属性在构造器里面声明,需要写明修饰符public id: string,public brand: string,public exture: string,public price: number) {}start(): void {console.log(this.brand + 'is starting....');}
}
let asus1 = new ASUS('0001', '华硕', '轻薄本', 5000)

接口规范对象,注意写法

//接口规范对象
interface ObjectInterface {name: stringage: numbergender?:string // 可选
}let obj1: ObjectInterface = { // 注意写法name: 'no_name',age: 18
}

定义函数规范,写法跟对象类似,也在写这个过程中感受到了ts的一些特点,比如:必须先声明res且定义其为空字符才能进行后面的相加和赋值;

// 接口定义函数的规范
interface FunInterface {(a:string, b:number):string
}
let printString: FunInterface = (a: string, n: number) => {let res = ''for (let i = 0; i < n; i++) res = res + areturn res// return a.repeat(n)
}

接口也可以继承。接口还能够合并,在某个地方定义接口a后,继续又定义了接口a并写了新的属性,两个接口会合并成一个

相关文章:

【TypeScript学习】TypeScript基础学习总结二

主要记录ts中的类、接口与泛型 1.类 无论是在哪种语言中&#xff0c;类都是面向对象编程(OOP)的一个主要实现方式。能够实现代码更加灵活&#xff0c;更具有结构化。类作用都是提供一个模板&#xff0c;通过类可以创建多个具有相同结构的对象。 // 类的定义&#xff0c;与对象…...

中国电信解锁万亿参数大模型:TeleAI的创新与突破

首个由万卡集群训练出来的万亿参数大模型&#xff0c;已被一家央企解锁。 具体而言&#xff0c;为了推动纯国产人工智能的探索&#xff0c;带来这条新路径的正是中国电信人工智能研究院&#xff08;TeleAI&#xff09;。 该研究院由中国电信集团的CTO、首席科学家兼院长李学龙…...

戴尔PowerEdge R840服务器亮黄灯 不开机

最近接修到一台东莞用户的DELL PowerEdge R840 服务器因为意外断电后&#xff0c;无法正常开机的问题&#xff0c; 大概故障现象是 插上电源线 按卡机按钮无响应&#xff0c;无法开机&#xff0c;无显示输出&#xff0c;工程师到现场检修&#xff0c;经过idrac中日志分析&#…...

【前端安全】js逆向之微信公众号登录密码

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; 网络安全、 Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 随着发展&#xff0c;越来越多的登录页面添加了密码加密的措施&#xff0c;使得暴力破解变得不在简单&a…...

C# 泛型使用案例_C# 泛型使用整理

一、系统自带常用的泛型 1.字典&#xff0c;集合 //字典 Dictionary<string, int> dic new Dictionary<string, int>(); //泛型集合 List<int> list new List<int>(); 2.泛型委托&#xff0c;输入参数&#xff0c;输出参数 //泛型 委托---输出参…...

Docker 安装 Citus 单节点集群:全面指南与详细操作

Docker 安装 Citus 单节点集群&#xff1a;全面指南与详细操作 文章目录 Docker 安装 Citus 单节点集群&#xff1a;全面指南与详细操作一 服务器资源二 部署图三 安装部署1 创建网络2 运行脚本1&#xff09;docker-compose.cituscd1.yml2&#xff09;docker-compose.cituswk1.…...

Arthas redefine(加载外部的.class文件,redefine到JVM里 )

文章目录 二、命令列表2.2 class/classloader相关命令2.2.3 redefine&#xff08;加载外部的.class文件&#xff0c;redefine到JVM里 &#xff09;举例1&#xff1a;加载新的代码&#xff0c;jad/mc 命令使用举例2&#xff1a;上传 .class 文件到服务器的技巧 本人其他相关文章…...

C++教程(三):c++常用的配置文件类型

目录 1. INI 文件 2. JSON 文件 3. YAML 文件 4. XML 文件 5. TOML 文件 6. 二进制配置文件&#xff08;Protocol Buffers, MessagePack, Avro 等&#xff09; 总结 在 C 项目中&#xff0c;常用的配置文件类型有多种选择&#xff0c;具体选择取决于项目的复杂性、可读性…...

Arduino Uno控制雨滴传感器模块的设计方案

以下是Arduino Uno控制雨滴传感器模块的设计方案&#xff1a; 一、硬件准备&#xff1a; 1. Arduino Uno 开发板一块。 2. 雨滴传感器模块一个。 3. 杜邦线若干。 4. 9V直流电源一个。 二、硬件连接&#xff1a; 1. 将Arduino Uno板的Vin引脚、GND引脚分别连接到9V直流电…...

华为常见命令手册

常见命令 display ip interface brief —> 查看设备上的每个接口的IP地址【地址/掩码/状态】 display interface gi0/0/0 → 查看该接口的MAC 地址 ipconfig → 查看 PC 上面的 IP地址 display arp → 查看设备的 ARP 表 arp -a → 查看 PC 上面的 ARP 表 display m…...

TinyAP:使用TinyML对抗Wi-Fi攻击的智能接入点

论文标题&#xff1a; 英文&#xff1a;TinyAP: An intelligent Access Point to combat Wi-Fi attacks using TinyML中文&#xff1a;TinyAP&#xff1a;使用TinyML对抗Wi-Fi攻击的智能接入点 作者信息&#xff1a; Anand Agrawal 和 Rajib Ranjan Maiti&#xff0c;来自印…...

grafana频繁DataSourceError问题

背景 随着 Grafana 数据量的不断增加&#xff0c;逐渐暴露出以下问题&#xff1a; Grafana 页面加载缓慢&#xff1b;Grafana 告警频繁出现 DatasourceError 错误。 对于第一个问题&#xff0c;大家可以参考这篇文章&#xff1a;Grafana 加载缓慢的解决方案。 不过&#xf…...

python-ds:Python 中的数据结构库(适用于面试的数据结构和算法合集)

在软件开发中&#xff0c;数据结构是组织和存储数据的方式&#xff0c;对算法的效率和程序的性能至关重要。Python 提供了许多内置的数据结构&#xff0c;但在一些复杂的应用场景中&#xff0c;原生数据结构可能无法满足特定需求。这时&#xff0c;一个功能强大、易于使用的数据…...

AccessoriesqueryController

目录 1、 AccessoriesqueryController 1.1、 库存配件查询 1.2、 查询仓库 1.2.1、 //把数据库数据加到表格&#xff1a;跟默认然一行数据进行合并 1.3、 /// 查询 1.3.1、 配件编码查询 1.3.2、 配件名称查询 1.3.3、 配件类型查询 AccessoriesqueryControlle…...

M3u8视频由手机拷贝到电脑之后,通过potplayer播放报错找不到文件地址怎么解决?

该文章前面三节主要介绍M3u8视频是什么&#xff0c;视频播放错误(找不到地址)的解决方法在后面 M3U8是一种多媒体播放列表文件格式&#xff0c;主要用于流媒体播放。 一、文件格式特点 1. 文本文件&#xff1a;M3U8是一个采用 UTF-8 编码的文本文件&#xff0c;这意味着它可…...

【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制

目录 1. 主库设置2. 从库设置3. 验证主从复制内容汇总表格 摘要&#xff1a; 在Windows系统上通过Docker部署MySQL主从复制&#xff0c;以下是详细的步骤和命令&#xff0c;帮助你设置一主一从的MySQL复制环境。 1. 主库设置 步骤1&#xff1a;运行MySQL主库容器 docker run …...

鸿蒙NEXT开发-界面渲染(条件和循环)(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

TypeScript 设计模式之【状态模式】

文章目录 状态模式&#xff1a;优雅切换的交通信号灯状态模式的奥秘状态模式有什么利与弊?如何使用状态模式来优化你的系统代码实现案例状态模式的主要优点状态模式的主要缺点状态模式的适用场景总结 状态模式&#xff1a;优雅切换的交通信号灯 当你站在繁忙的十字路口&#…...

MongoDB 聚合管道

参考: 聚合管道 - MongoDB 手册 v7.0 介绍 聚合管道由一个或多个处理文档的阶段组成&#xff1a; 每个阶段对输入文档执行一个操作。例如&#xff0c;某个阶段可以过滤文档、对文档进行分组并计算值。 从一个阶段输出的文档将传递到下一阶段。 一个聚合管道可以返回针对文档…...

python-patterns:Python 设计模式大全

python-patterns 是一个开源的 Python 项目&#xff0c;它提供了各种经典的设计模式的 Python 实现。设计模式是一种针对常见软件设计问题的可复用解决方案&#xff0c;通过使用设计模式&#xff0c;开发者可以编写出结构更加合理、易于维护和扩展的代码。 Python 是一门动态语…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...