TypeScript中Class Interface Type的定义和区别

TypeScript中的ClassInterfaceType是用来定义数据类型的工具。它们的使用情境和作用有些不同。

目录

Class(类)

Interface(接口)

Type(类型)

总结


Class(类)

类可以用于创建对象,它可以定义对象的属性和方法。 类可以单继承父类(每个类只能继承一个父类),并且可以通过创建实例来使用类定义的属性和方法。 类可以封装和组织数据和逻辑。

下面是一个Class的代码示例:

// 定义类  人
class Person {// 定义"人"这个类包含的属性name: string;age: number;// 实例化对象时,需传入的属性值constructor(name: string, age: number) {this.name = name;this.age = age;}// 实例化对象可调用此方法sayHello() {console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);}
}// 实例化一个"人"的对象
const person = new Person("John", 25);
// 调用此类中包含的方法
person.sayHello();

Interface(接口)

接口是用于定义对象的结构和行为的规范。 接口定义了对象应具备的属性和方法,但不提供实现。 接口可以用来描述类的公共部分,并且类可以实现一个或多个接口。 接口可以继承其他接口。

以下是一个Interface的代码示例:

// 定义接口
interface Shape {// 定义抽象方法  calculateArea(): number;
}// 通过implements实现以上的接口
class Circle implements Shape {radius: number;// 构造器constructor(radius: number) {this.radius = radius;}// 实现Shape接口方法calculateArea() {return Math.PI * this.radius ** 2;}
}// 实例化Circle
const circle = new Circle(5);
// 调用计算面积方法
console.log(circle.calculateArea());

Type(类型)

Type是用于定义数据的形状或结构。 Type可以定义基本类型(如number、string、boolean等)或自定义Type(如对象、数组、元组等)。 不支持继承其他Type, 但Type可以使用联合类型、交叉类型等进行复杂定义。 Type可以使用泛型来增加通用性和灵活性。

以下是一个Type的代码示例:

// 描述了一个拥有x和y属性的对象
type Point = {x: number;y: number;
};// 描述了一个拥有id和name属性的对象
type Student = {id: number;name: string;
};// 描述了一个拥有success和data属性的对象,并且data属性可以是string或number类型
type Result = {success: boolean;data: string | number;
};// 定义函数别名,可多处复用(T是一个泛型,此type描述了一个接受泛型参数并返回void的函数类型)
type Callback<T> = (result: T) => void;// KeyValues类型接收了一个类型参数 T,并使用 extends object 来限制 T 必须是一个对象类型
type KeyValues<T extends object> = {[K in keyof T]: T[K];
};const obj: KeyValues<{ name: string, age: number }> = {name: "John Doe",age: 25
};

总结

Class是用于定义对象的结构和行为,它是数据和行为的封装。 Interface是用于描述对象的结构和行为的规范,它是对类的抽象。 Type是用于定义数据的形状和结构,它是对数据的抽象。

它们之间的区别在于使用方式和目的不同。Class用于创建对象,Interface用于定义规范,而Type用于定义数据类型。在实际应用中,根据具体需求选择合适的工具。

(如有帮助,请记得点赞三连哦~您的点赞是我持续更新的动力~)

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

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

相关文章

【压测指南|压力测试核心性能指标及行业标准】

文章目录 压力测试核心性能指标及行业标准指标1&#xff1a;响应时间指标2&#xff1a;吞吐量&#xff08;TPS)指标3&#xff1a;失败率总结&#xff1a; 压力测试核心性能指标及行业标准 在做压力测试时&#xff0c;新手测试人员常常在看报告时倍感压力&#xff1a;这么多性能…

进入linux系统中修改网段-ip

第一步 &#xff1a;开启虚拟机 cd 到 /etc/sysconfig/network-scripts 目录下&#xff0c;输入命令给ls,展示这个目录下文件和文件夹 第二步&#xff1a;进入到以ifcfg开头的文件 # ifcfg开头的文件&#xff0c;如果有多个网卡&#xff0c;有多个ifcfg-ensxx文件 命令…

【GUI】使用PID控制器进行台式过程控制实验,以保持热敏电阻的温度(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、操作说明 &#x1f4a5;1 概述 本实验是温度控制的反馈控制应用。特别是&#xff0c;本实验讲解&#xff1a; 手动和自动控制的区别 生成动态数据的 步进测试 拟合动态数…

全国大学生数据统计与分析竞赛2021年【本科组】-B题:用户消费行为价值分析

目录 摘 要 1 任务背景与重述 1.1 任务背景 1.2 任务重述 2 任务分析 3 数据假设 4 任务求解 4.1 任务一&#xff1a;数据预处理 4.1.1 数据清洗 4.1.2 数据集成 4.1.3 数据变换 4.2 任务二&#xff1a;对用户城市分布情况与分布情况可视化分析 4.2.1 城市分布情况可视化分析 4…

选择最佳安全文件传输方法的重要性

在数字化时代&#xff0c;文件的传输是商务、教育、科研、医学等领域不可或缺的工作流程。为了保障数据安全&#xff0c;选择最佳安全文件传输方法非常关键。在本文中&#xff0c;我们将探讨选择最佳安全文件传输方法的重要性。 第一、最佳安全文件传输方法可以保证文件内容不被…

C++-----stack和queue

本期我们来学习stack和queue 目录 stack介绍 栈的使用 栈的模拟实现 queue介绍 队列的使用 队列的模拟实现 deque 优先级队列 模拟实现 仿函数 全部代码 stack介绍 1. stack 是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

【C++初阶】模板

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C初阶 ⭐代码仓库&#xff1a;C初阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

亚马逊云科技纽约峰会,充分释放数据价值和生成式AI的潜力

生成式AI将深刻改变每个公司的运营方式&#xff0c;标志着人工智能技术发展的新转折点。亚马逊云科技昨日在纽约峰会上宣布&#xff0c;推出七项生成式AI新功能&#xff0c;进一步降低了生成式AI的使用门槛&#xff0c;让无论是业务用户还是开发者都能从中受益。借助这些新功能…

【解析excel】利用easyexcel解析excel

【解析excel】利用easyexcel解析excel POM监听类工具类测试类部分测试结果备注其他 EasyExcel Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存&#xff0c;poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&…

2、基于redis实现分布式锁

目录 2.1. 基本实现2.2. 防死锁2.3. 防误删2.4. redis中的lua脚本2.4.1 redis 并不能保证2.4.2 lua介绍 2.5. 使用lua保证删除原子性 2.1. 基本实现 借助于redis中的命令setnx(key, value)&#xff0c;key不存在就新增&#xff0c;存在就什么都不做。同时有多个客户端发送setn…

亿信华辰举行制造业数字化转型研讨会,解密数字化最佳实践

制造业是国家经济命脉所系&#xff0c;推进制造业数字化转型已成为发展数字经济的重中之重。今天&#xff08;5月9日&#xff09;上午&#xff0c;亿信华辰携手沙丘社区成功举办“制造业数字化转型研讨会”&#xff0c;1.3万人线上观看&#xff0c;汇聚华为、鼎捷软件、亿信华辰…

RedHat离线安装工具yum+gcc+pcre+zlib+openssl+openssh

RedHat离线安装工具yumgccpcrezlibopensslopenssh 【一】安装gcc-c&#xff08;解决yum不可用问题&#xff09;&#xff08;1&#xff09;问题描述&#xff08;2&#xff09;替换安装yum&#xff08;3&#xff09;安装gcc 【二】安装pcre【三】安装zlib【四】安装openssl【五】…

spring学习笔记十四

注解开发Bean总结 功能 xml配置注解定义Bean bean标签 id属性class属性 Component ControllerServiceRepositorComponentScan 设置依赖注入 setter注入(set方法) 引用类型/简单类型构造器注入 引用类型和简单类型自动装配 Autowired QualifierValue 配置第三方Bean be…

IC设计工程师,参加IC面试应该注意哪些细节?

秋招已至&#xff0c;诸多IC设计企业&#xff0c;比如联发科、长鑫、大疆、燧原、地平线、复旦微、兆易创新、百度昆仑芯等&#xff0c;都已经陆续开启了提前批招聘。 很多人对各种关于秋招、面试、简历的比较感兴趣&#xff0c;所以今天就来跟大家分享关于秋招求职面试中的一…

uniapp实现预约时间选择弹窗组件

做了个组件&#xff0c;实现出当日预约时间组件&#xff0c;效果图如下 废话不多说&#xff0c;直接上代码&#xff0c;代码简单&#xff0c;参数自己任意改 <template><view class"inventory"><u-popup :show"show" :round"10"…

在CSDN学Golang云原生(Kubernetes Pod 有状态部署)

一&#xff0c;StatefulSet部署MongoDB集群 Kubernetes StatefulSet 是 Kubernetes 中的一种资源类型&#xff0c;它能够保证有状态服务&#xff08;Stateful Service&#xff09;的唯一性和顺序部署&#xff0c;适用于需要持久化存储、网络标识、状态管理等场景。MongoDB 是一…

形参动态内存开辟和柔性数组

//柔性数组 //定义&#xff1a;结构体最后一个成员允许是未知大小的数组 // 优点;在开辟空间时&#xff0c;连续开辟&#xff0c;便于释放空间&#xff0c;不会因多次开辟&#xff0c;导致释放空间出错 // 开辟空间时&#xff0c;节省动态开辟次数&#xff0c;节省空间&am…

OpenAI重磅官宣ChatGPT安卓版本周发布,现已开启下载预约,附详细预约教程

7月22号&#xff0c;OpenAI 突然宣布&#xff0c;安卓版 ChatGPT 将在下周发布&#xff01;换句话说&#xff0c;本周安卓版 ChatGPT正式上线&#xff01; 最早&#xff0c;ChatGPT仅有网页版。 今年5月&#xff0c;iOS版ChatGPT正式发布&#xff0c;当时OpenAI表示Android版将…

【C++ 重要知识点总结】自定义类型-类和结构体

类 类的基本特性 数据抽象和封装继承多态 1 类的构成——抽象 概念 数据抽象是一种依赖于接口和实现的分离的编程技术。类的接口包括用户所能执行的操作&#xff1b;类的实现包括类的数据成员、负责接口实现的函数体以及定义类所需要的的各种私有函数。封装实现了类的接口和实…

Java使用FFmpeg实现mp4转m3u8

Java使用FFmpeg实现mp4转m3u8 前言FFmpegM3U8 一、需求及思路分析二、安装FFmpeg1.windows下安装FFmpeg2.linux下安装FFmpegUbuntuCentOS 三、代码实现1.引入依赖2.修改配置文件3.工具类4.Controlle调用5.Url转换MultipartFile的工具类 四、播放测试1.html2.nginx配置3.效果展示…