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

TS学习03-类

calss A {name: stringconstructor(name:string) {this.name = name}greet() {return 'hello,' + this.name}
}
let people = new A('RenNing')

继承

子类是一个派生类,他派生自父类(基类),通过 extends关键字

派生类通常被称作 子类,基类通常被称作 超类

派生类包含了一个构造函数,它 必须调用 super()

公共、私有、受保护的修饰符

public

ts中 成员默认为public

private

不能再声明他的类的外部访问

子类无法访问 private

class Animal {private name: string;constructor(thenname: string) {this.name = theName}
}
new Animal('cat').name //报错

protected

protected成员可以再派生类中访问

构造函数(constructor)被标记成 protected 后,不能实例化该类,当是能被继承

class A{protected constructor() {}
}
class B extends A {}
let a = new A() //错误-A的构造函数时被保护的
let b = new B() //ok

readonly修饰符

readonly关键字将属性设置为只读,只读属性必须再声明时构造函数里被初始化。

class A {readonly name: string;readonly age: number = 18
}
(new A()).name = 1 //报错

参数属性

参数属性可以方便地让我们在一个地方定义并初始化一个成员

改造上面的例子后

class A {constructor(readonly name: string, readonly age: number) {}say() {console.log(this.name,this.age)}
}
let a = new A('Ren', 18)
a.say() //Ren 18

我们把声明和赋值合并至一处

存取器

ts 指出通过getter/setters来截取对象成员访问。

let passcode = 'searet passcode'
class Employee {private _fullName: string;get fullName() :string {return this._fullName}set fullName(newValue: string) {if(passcode && passcode == 'secret passcode') {this._fullName = newValue}else {console.log('Error Unauthorized update of employee')}}
}
let employee = new Employee()

只带有 get不带有 set的存取器自动被推断为 readonly

静态属性

使用 static定义

class A {static name: string = 'RenNing'
}
console.log(A.name)//RenNing

抽象类abstract

作为其他派生类的基类使用,不会被实例化,可定义抽象类、抽象方法

abstract class A {abstract makeSound(): void;move: void {console.log('roamin the earch...')}
}

抽象类中的抽象方法不包含具体实现,并且必须再派生类中事项,

与接口方法相似:只定义方法签名,但不包含方法体。abstract 可以包含访问修饰符

abstract class A {abstract say() :void//必须在派生类中实现sing(){console.log('sing-A')}
}
class B extends A {say():void{console.log('say-B')}song() :void {console.log('song-B')}
}
let point: A
point = new A()//错误:不能实例化抽象类
point = new B()
point.say()say-B
point.song()//错误:方法再声明抽象类中不存在let point: B
point = new B()
point.say()//say-B
point.song()//song-B
point.sing()//sing-A

高级技巧

取类的 类型 **typeof 类名, 这个类型包含了类的所有静态成员和构造函数

class A {static name: string = "Ren"age: number = 18
}
let aMaker: type A = A
console.log(A.name)//Renlet b: A = new A()
console.log(b.age)//18console.log(typeof A)// function

把类当做接口使用

类定义会创建两个东西:类的实例类型和一个构造函数

class A {x: number;y:number}
interface Point3d extends Point {z: number}
let point3d: Point2d = {x: 1, y: 2, z: 3}

无法直接实例化

接口继承类

构造函数被 protected 修饰

抽象类

相关文章:

TS学习03-类

类 calss A {name: stringconstructor(name:string) {this.name name}greet() {return hello, this.name} } let people new A(RenNing)继承 子类是一个派生类,他派生自父类(基类),通过 extends关键字 派生类通常被称作 子类…...

FastAPI(七)应用配置

目录 一、在apps下新建文件夹config 二、新建配置文件app_conf.py 一、在apps下新建文件夹config 二、新建配置文件app_conf.py from functools import lru_cachefrom pydantic.v1 import BaseSettingsclass AppConfig(BaseSettings):app_name: str "Windows10 插件&qu…...

eclipse Java Code_Style Code_Templates

Preferences - Java - Code Style - Code Templates Eclipse [Java_Code_Style_Code_Templates_ZengWenFeng] 2023.08.07.xml 创建一个新的工程,不然有时候不生效,旧项目可能要重新导入eclipse 创建一个测试类试一试 所有的设置都生效了...

01《Detecting Software Attacks on Embedded IoT Devices》随笔

2023.08.05 今天读的是一篇博士论文 论文传送门:Detecting Software Attacks on Embedded IoT Devices 看了很长时间,发现有一百多页,没看完,没看到怎么实现的。 摘要 联网设备的增加使得嵌入式设备成为各种网络攻击的诱人目标&…...

APP外包开发的学习流程

学习iOS App的开发是一项有趣和富有挑战性的任务,是一个不断学习和不断进步的过程。掌握基础知识后,不断实践和尝试新的项目将使您的技能不断提升。下面和大家分享一些建议,可以帮助您开始学习iOS App的开发。北京木奇移动技术有限公司&#…...

第0章 环境搭建汇总

mini商城第0章 环境搭建汇总 本文是整个mini商城的前置文档,所有用到的技术安装都在本篇文档中有详细描述。所有软件安装不分先后顺序,只是作为一个参考文档,需要用到什么技术软件,就按照文档安装什么软件,切不可一上来全部安装一遍。 文章中有些截图中服务器地址是192.16…...

大数据培训课程-《机器学习从入门到精通》上新啦

《机器学习从入门到精通》课程是一门专业课程,面向人工智能技术服务,课程系统地介绍了Python编程库、分类、回归、无监督学习和模型使用技巧以及算法和案例充分融合。 《机器学习从入门到精通》课程亮点: 课程以任务为导向,逐步学…...

暗黑版GPT流窜暗网 降低犯罪门槛

随着AIGC应用的普及,不法分子利用AI技术犯罪的手段越来越高明,欺骗、敲诈、勒索也开始与人工智能沾边。 近期,专为网络犯罪设计的“暗黑版GPT”持续浮出水面,它们不仅没有任何道德界限,更没有使用门槛,没有…...

数电与Verilog基础知识之同步和异步、同步复位与异步复位

同步和异步是两种不同的处理方式,它们的区别主要在于是否需要等待结果。同步是指一个任务在执行过程中,必须等待上一个任务完成后才能继续执行下一个任务;异步是指一个任务在执行过程中,不需要等待上一个任务完成,可以…...

JAVA Android 正则表达式

正则表达式 正则表达式是对字符串执行模式匹配的技术。 正则表达式匹配流程 private void RegTheory() {// 正则表达式String content "1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2) &qu…...

【MFC】07.MFC第三大机制:消息映射-笔记

本专栏上两篇文章分别介绍了【MFC】05.MFC第一大机制:程序启动机制和【MFC】06.MFC第二大机制:窗口创建机制,这篇文章来为大家介绍MFC的第三大机制:消息映射 typfd要实现消息映射,必须满足的三个条件: 类必…...

【jvm】jvm的生命周期

目录 一、启动二、执行三、退出 一、启动 1.java虚拟机的启动是通过引导类加载器bootstrap class loader创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的(根据具体虚拟机的类型) 二、执行 1.一个运行中的java虚拟机…...

激光雷达测距和摄像头联合棋盘格反射率标定板

目前,激光雷达不仅在军事上起到了重要的作用,而且发挥其测程大、精度高、反应速度快、可靠性高等优点,在商业领域应用越来越广,发展越来越迅速,具有较高的实用价值和商业价值。车载三维成像激光雷达采用脉冲式测量原理…...

【Docker】docker镜像+nginx部署vue项目:

文章目录 一、文档:二、打包vue项目:三、配置nginx:四、配置Dockerfile:五、构建镜像:六、运行容器:七、最终效果: 一、文档: 【1】菜鸟教程:https://www.runoob.com/do…...

文件编辑(vi/vim)

在所有的命令执行前,先按Esc 1、vi的基本概念   基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式…...

1007 Maximum Subsequence Sum (PAT甲级)

惭愧&#xff0c;知道该用DP做&#xff0c;但是又翻了参考书才想起来。dp[i]表示以i项为结尾的最大子列。 #include <cstdio> #include <vector>int K, maxx, u, pu, pv; std::vector<int> vec, dp;int main(){scanf("%d", &K);vec.resize(K)…...

虚拟机centos7配置网络

虚拟机centos7配置网络 centos7克隆之后需要配置网络才能联网。 实验环境&#xff1a; VMware Workstation Pro 16CentOS 7系统虚拟机主机Windows 11系统 1.VMware网络模式设置为NAT模式 虚拟机–设置–网络适配器– ​​ ‍ 2.查看虚拟机 子网IP和网关IP 编辑–虚拟网…...

ChatGPT实战:创业咨询,少走弯路,少踩坑

用九死一生形容创业再适合不过&#xff0c;不过一旦成功回报也很诱人&#xff0c;这也是为什么那么多人下场创业。纸上得来终觉浅&#xff0c;绝知此事要躬行&#xff0c;创过业的人都知道其中的心酸&#xff0c;而他们也建议你去创业&#xff0c;因为那真不是一般人能干的事。…...

LangChain手记 Overview

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Overview 综述&#xff08;Overview&#xff09; LangChain是为大模型应用开发设计的开源框架 LangChain目前提供Python和JavaScript&#xff08;TypeScript&#xff09;两种语言的包 LangChain的主攻方向是聚合和…...

Vue_02:详细语法以及代码示例 + 知识点练习 + 综合案例(第二期)

2023年8月4日15:25:01 Vue_02_note 在Vue中&#xff0c;非相应式数据&#xff0c;直接往实例上面挂载就可以了。 01_Vue 指令修饰符 什么是指令修饰符呢&#xff1f; 答&#xff1a; 通过 " . " 指明一些指令后缀&#xff0c;不同 后缀 封装了不同的处理操作 —…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...