初识 TypeScript 二。

简介: 初识 TypeScript 二。

三.extends 继承


学习过React的小伙伴一定对这个单词不陌生,我们创建一个类组件的时候往往就需要用到这个单词。

image.png

其实这里每次都是继承React.Component这个父类的。(我刚开始学习的时候以为这是固定写法呢,其实不然。)

四.type 约束对象类型


image.png

image.png

上图中xiaoming这个对象在声明中 定义了类型为person_1,那么小明的属性的数量和属性值的类型就已经确定,不允许多或者少。如上图我多了一个gender属性,就会报错。

五.interface 接口


1.接口可以定义一个的结构,定义一个类里需要有哪些属性和方法。 (不要在这里迷了,类 是定义实例化对象的结构)

2.接口中所有的属性都不允许有具体值

3.接口在定义对象中时,也是只定义对象的结构,接口本身不允许有具体值

4.接口中所有的方法,都不允许有逻辑运算.类似于抽象类里的抽象方法(接口和抽象类的不同是,抽象类里我可以给某个属性一个初始值,并且抽象类里可以有抽象方法也可以有具体逻辑运算的方法。而接口中不允许出现具体的值和 方法的方法体)

6.接口可以合并属性,下面是允许的。在被实现或者被继承的时候,实例属性为name age sex三个合♟

image.png

6.接口不仅可以用来定义类的结构,还可以定义对象结构,但是不能实例化对象(const xiaoming=new Myinter()是不允许的)要分清楚定义对象和实例化对象的区别。不要迷了。

image.png

下面是实例化对象(此处的用法和 type并无区别)

image.png

其实我刚开始到这一步的时候非常迷惑,这不是脱裤子放屁多此一举吗,我干嘛不直接class AA,然后设定构造器,然后实例化。为什么要先interface,然后class AA implements interface呢?

具体的使用场景有不同的应用方法,我能想到的就是约束子类的内容,不让子类多出一些其他属性。我举个不恰当的例子,假如你在设计一款射击游戏。你定义了一个接口,名字叫gun

image.png

等等其他属性,这是以下所有子枪必须拥有切不能多的属性。(你多了一个其他属性对其他枪来说不就不平衡了吗?除非充钱....)

然后枪的子类也必须且只能有这些属性。这相当于一个规范,非常类似与抽象类的概念。

image.png

六.泛型


这个就好像是给函数的参数,返回值设置一些限制,让函数的具体功能更加清晰,对于后期代码维护非常方便。

image.png

以这个函数为例子,你这样看会觉得啊,这不就是返回一直参数吗?但是你并不知道它要返回值的类型,也就是对于你后期维护来讲会很迷,不知道这个函数用的具体位置。

但是我也不想一开始就把这个函数写死了,比如下面,这样虽然很清晰,但是我如果要传入一个字符串呢?我是不是就得重新写一个函数 foo2 让参数是字符串类型呢

image.png

image.png

感觉这样也没必要,我就想根据我函数调用的时候我再设置参数的类型,那怎么办呢?

泛型的用处就来了。不要问为什么是<>这个扩起来,问就是规范!至于里面的T,只不过是一个代号而已,你就当是你数学中的 假设,假设 三角形的sin为X。

image.png

不一定非得是T,你随便起名字都行。不过就像循环里的i一样,我们约定先写T,P,也不一定,看项目怎么规定的吧。

image.png

这时候你就可以在你调用函数的时候,给参数赋值时,别忘了TS有自动检测的功能,忘记的去翻看我的第一篇内容的第一节。

image.png

ok现在我的T就是"number"类型

image.png

ok现在我的T就是字符串"string"类型

 

因为这是TS的自动检测功能,你还可以:在调用函数的时候直接设定T的类型,因为当你调用函数的时候,你已经非常明确你需要参数的类型是哪些值了。

下图就是我规定了number 我却给了一个字符串类型,那么就会报错.

image.png

T还可以继承与(extends) interface,class

image.png

image.png

这里就不再深入研究





相关文章
小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
4003 0
小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
|
9月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
316 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
10月前
|
安全 算法 网络安全
HTTP和HTTPS的区别
本文介绍HTTP与HTTPS的区别、HTTPS链接建立过程及常见加密算法。HTTP为明文传输,易被窃听;HTTPS通过SSL/TLS协议加密,确保数据安全。HTTPS使用端口443,提供认证机制。文中还详细讲解了对称加密(如AES、DES)和非对称加密(如RSA、ECC)算法的特点及应用场景。
|
Web App开发 Linux 数据安全/隐私保护
Linux curl命令详解
Linux curl命令详解
|
云安全 SQL 安全
揭秘DDoS与CC攻击的异同与防御策略!
本文详细解析了CC攻击与DDoS攻击这两种常见网络威胁,探讨了它们的异同及防御策略。通过一个网站遭遇攻击的真实案例,揭示了CC攻击的隐蔽性和DDoS攻击的强大破坏力。文章还介绍了德迅云的高防服务器解决方案,强调了加强网络安全意识和技术防护的重要性,帮助网站运营者有效抵御网络攻击,确保业务稳定运行。
|
数据可视化 搜索推荐 物联网
室内定位新突破:基于3D可视化与iBeacon技术的商场导航营销系统
**维小帮商场导航系统利用3D GIS、iBeacon定位、VR及物联网技术,提供3D导航、AR实景指引、设施查找及位置分享功能,提升顾客体验,增强商场品牌,推动经济效益增长。通过精准路径规划和沉浸式导航,用户能轻松找店,商场则塑造了智能形象,促进了交易量。**
372 1
室内定位新突破:基于3D可视化与iBeacon技术的商场导航营销系统
|
监控 搜索推荐 Java
实战:基于Java的实时数据流处理平台
实战:基于Java的实时数据流处理平台
|
编解码 开发工具 Android开发
Android平台轻量级RTSP服务模块技术接入说明
为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务SDK。 轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP或者RTMP服务,实现本地的音视频数据(如摄像头、麦克风),编码后,汇聚到内置RTSP服务,对外提供可供拉流的RTSP URL,轻量级RTSP服务,适用于内网环境下,对并发要求不高的场景,支持H.264/H.265,支持RTSP鉴权、单播、组播模式,考虑到单个服务承载能力,我们支持同时创建多个RTSP服务,并支持获取当前RTSP服务会话连接数。
222 0
|
数据可视化 JavaScript 前端开发
使用ECharts创建动态数据可视化图表
使用ECharts创建动态数据可视化图表
|
监控 Java
JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
391 0