TypeScript 类

1. 基本用法

在 TypeScript 中,可以使用 class 关键字来定义类,然后通过 new 关键字来创建类的实例。例如:

class Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}greet() {console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);}
}let person = new Person("Alice", 30);
person.greet(); // 输出:Hello, my name is Alice and I'm 30 years old.

2. 继承与多态

在 TypeScript 中,类支持继承,子类可以继承父类的属性和方法,并且可以重写父类的方法实现多态。例如:

class Animal {name: string;constructor(name: string) {this.name = name;}makeSound() {console.log("Animal makes a sound.");}
}class Dog extends Animal {makeSound() {console.log("Dog barks.");}
}let dog = new Dog("Buddy");
dog.makeSound(); // 输出:Dog barks.

3. 访问修饰符

TypeScript 提供了访问修饰符(Access Modifiers),用于控制类的成员的可访问性。包括 publicprivateprotected。例如:

class Car {private speed: number;constructor(speed: number) {this.speed = speed;}accelerate() {this.speed += 10;}getSpeed() {return this.speed;}
}let car = new Car(50);
// console.log(car.speed); // Error: 'speed' is private and can only be accessed within class 'Car'
console.log(car.getSpeed()); // 输出:50
car.accelerate();
console.log(car.getSpeed()); // 输出:60

4. 抽象类

抽象类(Abstract Class)是不能直接实例化的类,它只能被继承,用于提供其他类的通用功能。抽象类可以包含抽象方法,子类必须实现这些抽象方法。例如:

abstract class Shape {abstract area(): number;
}class Circle extends Shape {radius: number;constructor(radius: number) {super();this.radius = radius;}area(): number {return Math.PI * this.radius * this.radius;}
}let circle = new Circle(5);
console.log(circle.area()); // 输出:78.53981633974483

5. 类与接口

类与接口是 TypeScript 中两个重要的概念,可以结合使用,实现更灵活的代码结构。例如:

interface Printable {print(): void;
}class Document implements Printable {print() {console.log("Document is being printed.");}
}

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

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

相关文章

乡村振兴的乡村人才引进与培养:引进和培养乡村人才,激发乡村发展活力,为乡村振兴提供人才保障

目录 一、引言 二、乡村人才引进与培养的重要性 (一)人才是乡村振兴的核心动力 (二)人才是乡村文化传承的载体 (三)人才是乡村社会治理的基石 三、乡村人才引进与培养的现状 (一&#xf…

备战秋招c++ 【持续更新】

T1 牛牛的快递 原题链接:牛牛的快递_牛客题霸_牛客网 (nowcoder.com) 题目类型:模拟 审题&确定思路: 1、超过1kg和不足1kg有两种不同收费方案 ---- 起步价问题 2、超出部分不足1kg的按1kg计算 ----- 向上取整 3、向上取整的实现思路…

一文掌握Java中的CyclicBarrier、CountDownLatch和Semaphore

1.CountDownLatch 1.1 介绍和用途 CountDownLatch 是一个同步助手类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 1.2 工作原理 它通过一个计数器来实现,我们初始化 CountDownLatch 对象时指定计数器的值&am…

Android基础-Activity的介绍

在Android系统中,Activity是一个重要的组件,它承载了用户与应用之间的交互界面。以下是关于Activity的功能、作用以及生命周期的详细介绍。 Activity的功能和作用 提供用户界面: Activity是Android应用程序中用于表示一个屏幕或用户界面的组…

d2-crud-plus 使用小技巧(五)—— 搜索时间(或下拉列表)后,点击X清除按钮后返回值为null,导致异常

问题 使用vue2elementUId2-crud-plus,时间组件自动清除按钮,点击清除按钮后对应的值被设置为null,原本应该是空数组([]),导致数据传到后端后报错。不仅适用于搜索,表单一样有效果。 解决方法 …

移动端应用订阅SDK接入攻略

本文档介绍了联想应用联运移动端订阅SDK接入操作指南,您可在了解文档内容后,自行接入应用联运移动端订阅SDK。 接入前准备 1请先与联想商务达成合作意向。 2.联系联想运营,提供应用和公司信息,并获取商户id、app id、key&#…

谷歌开发者账号身份验证不通过?该怎么办?

我们都清楚,随着谷歌上架行业的快速发展,谷歌政策也在不断更新变化,对开发者账号的审核标准也在不断提升。其中一项要求就是,开发者账号需要进行身份验证才能发布应用。 Your identity couldnt be verified!“我们无法…

词法与语法分析器介绍

概述 词法和语法可以使用正则表达式和BNF范式表达,而最终描述文法含义的事状态转换图 Lex与YACC 词法分析器Lex 词法分析词Lex,是一种生成词法分析的工具,描述器是识别文本中词汇模式的程序,这些词汇模式是在特殊的句子结构中…

二叉树的实现(递归实现)

前言:本文讲解通过递归的方式实现二叉树的一些基本接口。 目录 通过左右子树的方式实现二叉树: 二叉树的遍历: 求二叉树结点的个数: 二叉树所有节点的个数: 二叉树叶子节点的个数: 求第k层节点的节点…

4,八种GPIO模式

资料来源:【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 仅作个人自学笔记,如有冒犯&#xf…

电子阅览室解决方案

一.方案概述 “电子阅览室”概念一经提出,就得到了广泛的关注,纷纷组织力量进行探讨、研究和开发,进行各种模型的试验。随着数字地球概念、技术、应用领域的发展,电子阅览室已成为数字地球家庭的成员,为信息高速公路提…

深度解读 chatgpt基本原理

ChatGPT(Generative Pre-trained Transformer)是由OpenAI开发的一种大规模语言模型,基于Transformer架构,采用自监督学习和生成式预训练方法。以下是ChatGPT的基本原理的深度解读: ### 1. Transformer架构 Transforme…

深入理解C++智能指针系列(五)

引言 前面两篇介绍了std::unique_ptr的自定义删除器以及如何优化删除器的使用。本文将介绍std::unique_ptr在使用过程中的一些“奇技淫巧”。 正文 删除器和std::move std::move是将对象的所有权转移给另一个对象,那如果通过std::move来转移带自定义删除器的std::…

uniCloud云存储uni-cdn七牛云扩展存储-开发uniapp项目节约开发成本

为什么要使用uniCloud的扩展存储,那就是省钱,而且DCloud也一直在推uni-cdn,我在项目中也使用七牛云的扩展存储,确实是省钱,如果你的项目使用到大量的图片后者音视频,这些的算计可以帮你省不少钱。下面就通过…

OSPF的数据库表 +LSA类别

<r1>display ospf sdb 查看OSPF数据库目录 LSDB中装载了所有可以学习到的LSA; LSA--链路状态通告 一条拓扑或一条路由条目被称为一条LSA OSPF协议的数据库是本地所有LSA的集合&#xff0c;不同网络环境下将产生不同类别的LSA LSA 在共享时基于 LSU 数据包传递…

【状态机动态规划】3129. 找出所有稳定的二进制数组 I

本文涉及知识点 动态规划汇总 LeetCode 3129. 找出所有稳定的二进制数组 I 给你 3 个正整数 zero &#xff0c;one 和 limit 。 一个 二进制数组 arr 如果满足以下条件&#xff0c;那么我们称它是 稳定的 &#xff1a; 0 在 arr 中出现次数 恰好 为 zero 。 1 在 arr 中出现…

leetCode.83. 删除排序链表中的重复元素

leetCode.83. 删除排序链表中的重复元素 代码 class Solution { public:ListNode* deleteDuplicates(ListNode* head) {auto p head;while(p){auto q p->next;while(q && p->val q->val) q q->next;if(p->next q) p p->next;else p->next …

dp背包问题

英雄联盟游戏中新出n个英雄&#xff0c;用长度为n的教组 costs 表示每个英雄的定价&#xff0c;其中 costs[i]表示第i个英雄的点券价格。假如你一共有coins点券可以用于消费&#xff0c;且想要买尽可能多的英雄并日选择英雄按costs[i]给出顺序获取。给你价格数组 costs 和金币量…

Golang | Leetcode Golang题解之第116题填充每个节点的下一个右侧节点指针

题目&#xff1a; 题解&#xff1a; func connect(root *Node) *Node {if root nil {return root}// 每次循环从该层的最左侧节点开始for leftmost : root; leftmost.Left ! nil; leftmost leftmost.Left {// 通过 Next 遍历这一层节点&#xff0c;为下一层的节点更新 Next …

Java中的线程同步:确保数据一致性和避免竞态条件

在多线程编程中&#xff0c;线程同步是保证数据一致性和防止竞态条件的关键技术。当多个线程尝试同时访问和修改同一数据资源时&#xff0c;如果没有适当的同步机制&#xff0c;程序可能会产生不可预见的结果。Java提供了多种同步工具和技术&#xff0c;以帮助开发者有效管理线…