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

TS(类 接口 泛型)

文章目录

    • 复习相关知识
    • 属性修饰符
      • public 修饰符
      • 属性的简写形式
    • protected修饰符
      • private修饰符
      • readonly修饰符
    • 抽象类
  • 接口(interface)
    • 定义类结构
    • 定义对象结构
    • 定义函数结构
    • 接口之间的继承
    • 接口自动合并 (可重复定义)
    • 一些相似的概念的区别
      • 1.interface和type的区别
      • 2.interface和抽象类的区别
  • 泛型

复习相关知识

在这里插入图片描述
在这里插入图片描述

属性修饰符

在这里插入图片描述

public 修饰符

在这里插入图片描述
在这里插入图片描述

属性的简写形式

完整写法

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

简写形式

class Person {
  constructor(
    public name: string,
    public age: number
  ) { }
}

protected修饰符

在这里插入图片描述
在这里插入图片描述

private修饰符

class Person {
  constructor(
    public name: string,
    public age: number,
    // IDCard属性为私有的(private)属性,只能在【类内部】使⽤
    private IDCard: string
  ) {}
  private getPrivateInfo() {
    // 类内部可以访问私有的(private)属性 —— IDCard
    return `身份证号码为:${this.IDCard}`;
  }
  getInfo() {
    // 类内部可以访问受保护的(protected)属性 —— name和age
    return `我叫: ${this.name}, 今年刚满${this.age}`;
  }
  getFullInfo() {
    // 类内部可以访问公开的getInfo⽅法,也可以访问私有的getPrivateInfo⽅法
    return this.getInfo() + "," + this.getPrivateInfo();
  }
}
const p1 = new Person("张三", 18, "110114198702034432");
console.log(p1.getFullInfo());
console.log(p1.getInfo());
console.log(p1.name);

// 以下代码均报错
// p1.IDCard
// p1.getPrivateInfo()

readonly修饰符

在这里插入图片描述

抽象类

概述: 抽象类是一种无法被实例化的类 专门用来定义类的结构和行为,类中可以写抽象方法也可以写具体实现
抽象类主要用来为其派生类提供一个基础结构 要求其派生类必须实现其中的抽象方法

简记:抽象类不能实例化,其意义是可以被继承,抽象类里可以有普通方法,也可以有抽象方法 抽象方法没有函数体 (即没有{})

过以下场景,理解抽象类
我们定义⼀个抽象类 Package ,表示所有包裹的基本结构,任何包裹都有重量属性 weight ,包裹都需要计算运费。但不同类型的包裹(如:标准速度、特快专递)都有不同的运费计算方式,因此用于计算运费的 calculate 方法是⼀个抽象方法,必须由具体的子类来实现。

在这里插入图片描述
StandardPackage 类继承了 Package ,实现了 calculate 方法:

第一个weight不写public的原因是因为 weight是父类的属性(本身写一般写法的时候就不需要声明
然后再在构造器里面写this.weight=weight) 只有子类独有的属性 使用简写形式的时候才需要public

在这里插入图片描述

在这里插入图片描述

总结:何时使用抽象类?
1.定义通用接口:为一组相关的类定义通用的行为(方法或属性)时
2.提供基础实现:在抽象类中提供某些方法或为其提供基础实现,这样派生类就可以继承这些实现
3.确保关键实现:在抽象类中提供某些方法或为其提供基础实现,这样派生类就可以继承这些实现
共享代码和逻辑:当多个类需要共享部分代码时,抽象类可以避免代码重复

接口(interface)

interface是一种定义结构的方式,主要作用是为类 对象 函数等规定一种契约,这样可以确保代码的一致性和类型安全,但要注意
interface 只能定义格式,不能包含任何实现

定义类结构

在这里插入图片描述

定义对象结构

注意 对象结构不需要 implements
在这里插入图片描述

定义函数结构

在这里插入图片描述

接口之间的继承

一个interface继承另一个interface从而实现代码的复用
在这里插入图片描述

接口自动合并 (可重复定义)

在这里插入图片描述

何时使用接口
1.定义对象的格式:描述数据模型,API响应格式,配置对象等等 是开发中用的最多的场景
2.类的契约:规定一个类需要实现哪些属性和方法
3.扩展已有接口:一般用于扩展第三方库的类型,这种特性在大型项目中可能会用到

一些相似的概念的区别

1.interface和type的区别

相同点:interface和type都可以用于定义对象的结构 在定义对象结构时,两者可以互换
不同点:interface 更专注于定义对象和类的结构 支持继承 合并
type可以定义类型别名 联合类型 交叉类型 但不支持继承和自动合并
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.interface和抽象类的区别

相同点:都能定义一个类的格式(定义类应遵循的契约)
不相同:
接口: 只能描述结构 不能有任何实现代码 一个类就可以实现多个接口
抽象类: 既可以包含抽象方法 也可以包含具体方法 一个类只能继承一个抽象类

在这里插入图片描述

泛型

泛型允许我们在定义函数、类或接⼝时,使⽤类型参数来表示未指定的类型,这些参数在具体使⽤时,才被指定具体的类型,泛型能让同⼀段代码适⽤于多种类型,同时仍然保持类型的安全性

举例:如下代码中 就是泛型( 不一定非叫T ) 设置泛型后即可在函数中使用T来表示该类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/383379.html

相关文章:

  • 【Python编程实例】-深入理解Python线程安全
  • 【机器学习】随机森林算法
  • 网页,app,微信小程序互相跳转
  • 传统的问答系统;;基于生成的问答系统;;基于检索增强生成的问答系统RAG
  • 工业4.0时代下的分布式IO模块
  • 第二话:JS中new操作符的原理
  • 如何将自己的程序文件上传至Github
  • Android——从相机/相册获取图片
  • 无人机避障——大疆与Airsim中的角速度信息订阅获取
  • [免费]SpringBoot+Vue(高校)学籍管理系统【论文+源码+SQL脚本】
  • 【原创】java+ssm+mysql收纳培训网系统设计与实现
  • 【Ajax】跨域
  • StarRocks 在 Shopee 数据产品的实践
  • 应用链风口下,一键发链该如何选择?
  • 数据结构模拟题[十]
  • Java项目实战II基于Java+Spring Boot+MySQL的智能推荐的卫生健康系统(开发文档+数据库+源码)
  • 编译google protobuf项目,生成相应语言的dll文件
  • React中类组件和函数组件的理解和区别
  • 微信小程序 uniapp+vue老年人身体监测系统 acyux
  • 域名申请网站需要了解的事项