【前端vue3】TypeScrip-Class类用法

类型声明

TypeScrip定义Class类
语法:

// 定义一个名为 Person 的类
class Person {constructor () {// 构造函数:稍后定义}run () {// 方法:稍后定义}
}

在TypeScript是不允许直接在constructor 定义变量的 需要在constructor上面先声明
例如:

class Person{constructor(name:string,age:number){this.name = name;}run(){}
}

以上代码提示出现错误:类型“Person”上不存在属性“name”。

在这里插入图片描述

在constructor上面声明后错误就消失了

class Person{name: stringage: numberconstructor(name:string,age?:number){this.name = name;}run(){}
}

在这里插入图片描述

这样引发了第二个问题你如果了定义了变量不用 也会报错 通常是给个默认值 或者 进行赋值
例如:

class Person{name: stringage: numberconstructor(name:string,age:number){this.name = name}run(){}
}

在这里插入图片描述

给age给默认值或者赋值

class Person{name: stringage: number = 0 //给默认值constructor(name:string,age:number){this.name = name}run(){}
}
class Person{name: stringage: numberconstructor(name:string,age:number){this.name = name,this.age = age  //赋值}run(){}
}

类的修饰符

总共有三个:public private protected

public

public修饰符的使用:

使用public 修饰符 可以让你定义的变量 内部访问 也可以外部访问 如果不写默认就是public

class Person{public name: stringage: numberconstructor(name:string,age:number){this.name = name,this.age = age}run(){}
}
let xiaoc =new Person("小C学安全",123);
xiaoc.name //name参数是可以直接调用的

private

使用 private 修饰符 代表定义的变量私有的只能在内部访问 不能在外部访问

class Person{public name: stringprivate age: numberconstructor(name:string,age:number){this.name = name,this.age = age}run(){}
}
let xiaoc =new Person("小C学安全",123);
xiaoc.name
xiaoc.age // 属性“age”为私有属性,只能在类“Person”中访问。ts(2341)

在这里插入图片描述

protected

使用 protected 修饰符 代表定义的变量私有的只能在内部和继承的子类中访问 不能在外部访问

class Person{public name: stringprivate age: numberprotected sex: stringconstructor(name:string,age:number,sex:string){this.name = name,this.age = age,this.sex = sex}run(){}
}
let xiaoc =new Person("小C学安全",123,"男");
xiaoc.name
xiaoc.age
xiaoc.sex //属性“sex”受保护,只能在类“Person”及其子类中访问。ts(2445)

在这里插入图片描述

静态属性和静态方法

用static 定义的属性 不可以通过this 去访问 只能通过类名去调用

class Person{public name: stringprivate age: numberprotected sex: stringstatic height: numberconstructor(name:string,age:number,sex:string){this.name = name,this.age = age,this.sex = sexthis.height  //属性“height”在类型“Person”上不存在。你的意思是改为访问静态成员“Person.height”吗?ts(2576)}run(){}
}
let xiaoc =new Person("小C学安全",123,"男");
xiaoc.name

通过类名去调用

class Person{public name: stringprivate age: numberprotected sex: stringstatic height: number =180constructor(name:string,age:number,sex:string){this.name = name,this.age = age,this.sex = sex// this.height}run(){}
}
let xiaoc =new Person("小C学安全",123,"男");
xiaoc.name
console.log(Person.height);

在这里插入图片描述
atic 静态函数 同样也是不能通过this 去调用 也是通过类名去调用

class Person{public name: stringprivate age: numberprotected sex: stringstatic height: number =180constructor(name:string,age:number,sex:string){this.name = name,this.age = age,this.sex = sex// this.height}static run(){return console.log(this.name);}
}
let xiaoc =new Person("小C学安全",123,"男");
xiaoc.name
console.log(Person.height);Person.run()

需注意: 如果两个函数都是static 静态的是可以通过this互相调用

interface定义类

// 定义一个接口 PersonA,包含一个方法 get,接受一个参数 name,返回一个字符串
interface PersonA {get(name: string): string;
}// 定义一个接口 PersonB,包含一个方法 set,无参数,无返回值,以及一个属性 sex,类型为字符串
interface PersonB {set(): void;sex: string;
}// 定义一个类 PersonAClass
class PersonAClass {name: string; // 属性 name,类型为字符串constructor() {this.name = "小C学安全"; // 构造函数中初始化 name 属性为 "小C学安全"}
}// 定义一个类 PersonbClass,继承自 PersonAClass,并实现了 PersonA 和 PersonB 接口
class PersonbClass extends PersonAClass implements PersonA, PersonB {sex: string; // 属性 sex,类型为字符串constructor() {super(); // 调用父类 PersonAClass 的构造函数this.sex = "男"; // 构造函数中初始化 sex 属性为 "男"}// 实现接口 PersonA 中的方法 getget(name: string): string {return "小白"; // 返回固定字符串 "小白"}// 实现接口 PersonB 中的方法 setset() {// 空方法体,不执行任何操作}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csdn上传源码资源卖钱能买房买车吗?每天最高收入200-500?

csdn上传源码卖钱能买房买车吗,最高收入200-500? 作者收入日榜 不***孩 收益617.32元 程***妍 收益534.56元 s***n 收益323.71元 盈***客 收益315.05元 极***计 收益284.17元

2024-06-23 编译原理实验4——中间代码生成

文章目录 一、实验要求二、实验设计三、实验结果四、附完整代码 补录与分享本科实验,以示纪念。 一、实验要求 在词法分析、语法分析和语义分析程序的基础上,将C−−源代码翻译为中间代码。 要求将中间代码输出成线性结构(三地址代码&#…

企业级Web项目中应该如何做单元测试、集成测试和功能测试?

先自我介绍下: 本人有过10年测试经验,也参与过公安部网络安全产品测试交付、华为4G 网络设备测试交付、腾讯QQ空间APP产品测试交付。 关于“企业级Web项目中应该如何做单元测试、集成测试和功能测试”这个问题,我想给大家唠唠,我…

38 - 换座位(高频 SQL 50 题基础版)

38 - 换座位 -- 方法一 select(casewhen id%21 and id(select max(id) from seat) then idwhen id%20 then id-1else id1end) as id, student fromseat order byid;-- 方法二selectif(id%20,id-1,if(id(select max(id) from Seat),id,id1)) as id,student fromSeat order by id…

陀螺仪LSM6DSV16X与AI集成(7)----FIFO数据读取与配置

陀螺仪LSM6DSV16X与AI集成.6--检测自由落体 概述视频教学样品申请源码下载主要内容生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置量程设置FIFO水印设置速率使用流模式设置FIFO时间戳批处理速率使能时间戳FIFO状态寄存器演示…

Django数据驾驶舱

Django数据驾驶舱 1.项目介绍2.项目结构3.库表结构3.1 appcsdn的models3.2 appssq的models3.3 appweather的models3.4 appweibo的models 4.功能展示5.解决问题5.1 路由配置5.2 后端数据与前端echarts展示5.3 长图表丝滑滚动条 6.遗留问题7.资源分享 1.项目介绍 这里介绍本人最…

阿里云发送验证码流程

目录 1. 阿里云短信服务简介 2. 阿里云验证码发送流程 2.1 申请阿里云短信服务 2.2 短信模板及阿里云秘钥 1.开发者可以在自己的应用程序中集成短信发送功能。绑定发起测试的手机号,需要绑定的手机号才能成功发送验证码,其他的用户手机号发送的验…

如何在 Ubuntu 12.04 VPS 上安装和配置基本的 LDAP 服务器

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 LDAP(轻量级目录访问协议)是一种通过文件和目录层次结构管理相关信息的协议,它可以从集中位置管…

【4003】基于springboot实现的线上阅读系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

ARM裸机:基础了解

ARM的几种版本号 ARM内核版本号 ARMv7 ARM SoC版本号 Cortex-A8 芯片型号 S5PV210 ARM型号的发展历程 m microcontroller微控制器 就是单片机 a application应用级处理器 就是手机、平板、电脑的CPU r realtime实时处理器 响应速度快,主要用在工业、航天等领域 soc 、cpu、…

ubutu 18.04源码编译安装freeswitch 1.10.7支持视频通话——筑梦之路

软件版本说明 ubuntu版本18.04:https://releases.ubuntu.com/18.04.6/ubuntu-18.04.6-live-server-amd64.iso freeswitch 版本1.10.7:https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.7.-release.tar.gz spandsp包:https:…

VB计算圆柱体积和表面积

已知圆半径和圆柱的高,计算圆柱体积和表面积。 Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickConst PI 3.14159Dim r As Integer, h As IntegerDim t As Single, s As Singler Val(TextBox1.Text)h V…

免杀笔记 ---> C语言

这次的更新可能有点慢,因为这段时间也比较忙,加上C语言还得和汇编结合,导致小编一个知识点总是得反复揣摩(太菜了),所以免杀的更新篇幅长度可能会达到两个月和三个月,但是小编能保证&#xff0c…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-24深度卷积神经网络AlexNet

24深度卷积神经网络AlexNet import torch from torch import nn import liliPytorch as lp import liliPytorch as lp import matplotlib.pyplot as pltdropout1 0.5 #Alexnet架构 net nn.Sequential(nn.Conv2d(1, 96, kernel_size11, stride4, padding1),nn.ReLU(),nn.MaxPo…

智慧校园综合管理系统的优点有哪些

在当今这个信息化飞速发展的时代,智慧校园综合管理系统正逐步成为教育领域的一股革新力量,它悄然改变着我们对传统校园管理的认知。这套系统如同一个无形的桥梁,将先进的信息技术与学校的日常运作紧密相连,展现出多维度的优势。 …

训练营第四十五天 | 435. 无重叠区间763.划分字母区间56. 合并区间738.单调递增的数字968.监控二叉树

435. 无重叠区间 力扣题目链接(opens new window) 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1…

6/22 第四周 python操作word

学习到了word有四个段落,都可以通过python来操作。 并且课程的体系,只是一个启蒙,需要在公司的项目中熟悉,从而具备专项测试的能力。 后续每天的学习笔记也需要侧重于理解的部分。

【CPP】归并排序

目录 1.归并排序简介代码分析归并的非递归形式 1.归并排序 归并排序(MERGE-SORT) 是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。 将已有序的子序列合并,得到…

NXP实战笔记(十四):32K3xx基于RTD-SDK在S32DS实现HSE的安装。

目录 1、概述 1.1、什么是HSE? 1.2、如何实现HSE的OTA功能 1.3、S32K3放置HSE的地址 2、通过调试器安装HSE 3、通过IVT方式安装HSE 4、坑点慎重踩 4.1、优化等级 4.2、Flash放RAM 4.3、C40_Ip配置更改 4.4、程序烧录 5、测试结果 6、代码链接 1、概述 首…

“论SOA在企业集成架构设计中的应用”必过模板,软考高级,系统架构设计师论文

论文真题 企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务功能暴露为服务,实现…