【前端】【Ts】【知识点总结】TypeScript知识总结

news2025/2/6 6:38:31
  • 一、总体概述

    • TypeScript 是 JavaScript 的超集,主要通过静态类型检查和丰富的类型系统来提高代码的健壮性和可维护性。
    • 它涵盖了从基础数据类型到高级类型、从函数与对象的类型定义到类、接口、泛型、模块化及装饰器等众多知识点。
    • 掌握这些内容有助于编写更清晰、结构更合理、错误更少的代码。
  • 二、详细知识点总结

    • (一)基础数据类型

      • (1) 原始类型
        • 包括 number、string、boolean、null、undefined、symbol、bigint。
      • (2) 对象类型
        • 对象、数组、元组、函数等都是引用类型。
    • (二)函数与作用域

      • (1) 函数定义
        • 可使用函数声明、函数表达式或箭头函数。
        • 支持可选参数、默认参数以及剩余参数。
      • (2) 返回值类型
        • 可通过 void 标注无返回值函数,使用 never 表示永远不会返回(如抛异常或无限循环)。
    • (三)接口 (interface)

      • (1) 对象类型定义
        • 用于声明对象属性及其类型,提升代码重用性和可读性。
      • (2) 函数与数组类型控制
        • 可约束函数的参数和返回值,也可用于定义数组索引类型。
      • (3) 属性修饰
        • 支持可选属性(?)和只读属性(readonly)。
      • (4) 继承
        • 通过 extends 实现单继承或多继承,扩展已有接口。
    • (四)类 (Class)

      • (1) 基本概念
        • 包括构造函数、实例属性与方法。
      • (2) 访问修饰符
        • public(公有)、private(私有)、protected(受保护),控制成员的可见性。
      • (3) 静态成员与抽象类
        • 静态属性与方法属于类本身,抽象类用于定义抽象方法供子类实现。
    • (五)泛型 (Generics)

      • (1) 泛型函数
        • 使函数参数和返回值具有灵活的类型。
      • (2) 泛型接口与类
        • 用于在接口或类中引入类型参数,增强复用性。
      • (3) 泛型约束
        • 限制泛型类型必须满足某些条件(如具有某些属性)。
    • (六)枚举 (Enums)

      • (1) 数字枚举
        • 默认从 0 开始,每个枚举成员自动递增,可进行反向映射。
      • (2) 字符串枚举
        • 枚举成员为字符串常量,具有更好的语义。
    • (七)高级类型

      • (1) 联合类型与交叉类型
        • 联合类型使用 “|” 限制变量取值为多个类型中的一种;交叉类型 “&” 则用于组合多个类型的特性。
      • (2) 字面量类型
        • 限制变量只能取具体的字面量值,常与联合类型一起使用。
      • (3) 类型别名 (type alias)
        • 用于给复杂类型或联合类型取别名,便于复用和维护。
      • (4) interface 与 type 的区别
        • 接口侧重于描述对象结构,支持声明合并;类型别名适用于任何类型,但不支持合并。
    • (八)类型推断与类型兼容

      • (1) 类型推断
        • 编译器根据变量赋值自动推断类型,简化代码书写。
      • (2) 类型兼容性
        • 不同类型之间的兼容判断,决定了赋值、参数传递时的类型匹配。
    • (九)类型保护

      • (1) 内置类型保护
        • 使用 typeof、instanceof、in 等操作符判断类型。
      • (2) 用户自定义类型保护
        • 利用返回类型为 x is T 的函数,实现自定义的类型保护逻辑。
    • (十)装饰器 (Decorators)

      • (1) 装饰器概念
        • 通过 @ 符号为类、方法、属性、参数添加元数据或行为,常用于框架中。
      • (2) 使用条件
        • 需要开启 experimentalDecorators 编译选项。
    • (十一)模块系统与命名空间

      • (1) 模块化
        • 支持 ES6 模块(import/export)和 CommonJS 模块,实现代码分离。
      • (2) 命名空间
        • 用于组织代码内部模块,避免全局污染。
    • (十二)工具类型

      • (1) 常见工具类型包括:
        • Partial:将所有属性设为可选。
        • Readonly:将所有属性设为只读。
        • Record:构造键值对类型。
        • PickOmit:从类型中挑选或剔除某些属性。
        • 其他如 Exclude、Extract、NonNullable、ReturnType、InstanceType 等。
    • (十三)其他关键概念

      • (1) any 与 unknown
        • any 类型允许任意赋值,缺乏类型保护;unknown 类型更安全,需经过类型断言或检查后才能使用。
      • (2) 类型断言
        • 使用 as 或尖括号语法,将一个值指定为某一具体类型,提升类型判断准确性。
  • 三、总体回顾

    • TypeScript 的核心在于利用静态类型系统提前捕获错误,通过丰富的类型系统(包括基础类型、高级类型、接口、类、泛型等)以及工具类型来构造灵活且健壮的代码结构。
    • 掌握这些知识点不仅可以提高代码质量,还能在大型项目中更好地管理和维护代码。
    • 通过不断实践和总结,理解每个知识点的用途和最佳实践,将有助于编写出既安全又高效的 TypeScript 应用。

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

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

相关文章

C++,STL,【目录篇】

文章目录 一、简介二、内容提纲第一部分:STL 概述第二部分:STL 容器第三部分:STL 迭代器第四部分:STL 算法第五部分:STL 函数对象第六部分:STL 高级主题第七部分:STL 实战应用 三、写作风格四、…

【AI论文】直接对齐算法之间的差异模糊不清

摘要:直接对齐算法(DAAs)通过在对齐人类反馈的强化学习(RLHF)中用直接策略优化替代强化学习(RL)和奖励建模(RM),简化了语言模型对齐过程。DAAs可以根据其排序…

(9)gdb 笔记(2):查看断点 info b,删除断点 delete 3,回溯 bt,

(11) 查看断点 info b: # info b举例: (12)删除断点 delete 2 或者删除所有断点: # 1. 删除指定的断点 delete 3 # 2. 删除所有断点 delete 回车,之后输入 y 确认删除所有断点 举…

中间件的概念及基本使用

什么是中间件 中间件是ASP.NET Core的核心组件,MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲:Tomcat、WebLogic、Redis、IIS;狭义上来讲,ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…

S4 HANA手工记账Tax Payable – FB41

本文主要介绍在S4 HANA OP中手工记账Tax Payable – FB41。具体请参照如下内容: 手工记账Tax Payable – FB41 该事务代码用于手工处理税码统驭科目的记账,一般税码科目需要设置为只能自动记账,因此无法手工对税码统驭科目记账,但…

Java 大视界 -- Java 大数据在智慧文旅中的应用与体验优化(74)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

[leetcode]两数之和等于target

源代码 #include <iostream> #include <list> #include <iterator> // for std::prev using namespace std; int main() { int target 9; list<int> l{ 2, 3, 4, 6, 8 }; l.sort(); // 确保列表是排序的&#xff0c;因为双指针法要求输入是…

老游戏回顾:G2

一个老的RPG游戏。 剧情有独到之处。 ------- 遥远的过去&#xff0c;古拉纳斯将希望之光给予人们&#xff0c;人类令希望之光不断扩大&#xff0c;将繁荣握在手中。 但是&#xff0c;暗之恶魔巴鲁玛将光从人类身上夺走。古拉纳斯为了守护人类与其展开了一场激战&#xff0c…

行为驱动开发(BDD)如何提高自动化测试效率

在软件开发的过程中&#xff0c;自动化测试一直扮演着至关重要的角色。随着需求变化日益复杂、开发周期不断压缩&#xff0c;如何提升自动化测试的效率和准确性成为了现代软件开发团队的核心挑战之一。行为驱动开发&#xff08;BDD&#xff0c;Behavior Driven Development&…

Redis常见数据类型与编码方式

⭐️前言⭐️ 本小节围绕Redis中常见的数据类型与编码方式展开。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHu…

大型三甲医院算力网络架构的深度剖析与关键技术探索

一、引言 1.1 研究背景与意义 1.1.1 医疗信息化发展趋势 随着信息技术的迅猛发展&#xff0c;全球医疗行业正经历着深刻的数智化转型。数字化转型已成为医疗行业提升服务质量、优化运营效率、推动医学科研创新的关键驱动力。从电子病历系统的普及到远程医疗的广泛应用&#…

CSV数据分析智能工具(基于OpenAI API和streamlit)

utils.py&#xff1a; from langchain_openai import ChatOpenAI from langchain_experimental.agents.agent_toolkits import create_csv_agent import jsonPROMPT_TEMPLATE """你是一位数据分析助手&#xff0c;你的回应内容取决于用户的请求内容。1. 对于文…

产品经理的人工智能课 02 - 自然语言处理

产品经理的人工智能课 02 - 自然语言处理 1 自然语言处理是什么2 一个 NLP 算法的例子——n-gram 模型3 预处理与重要概念3.1 分词 Token3.2 词向量化表示与 Word2Vec 4 与大语言模型的交互过程参考链接 大语言模型&#xff08;Large Language Models, LLMs&#xff09;是自然语…

华为手机nova9,鸿蒙系统版本4.2.0.159,智慧助手.今天版本是14.x,如何卸载智慧助手.今天?

手欠&#xff0c;将手机鸿蒙系统升级到4.2.0.159后&#xff0c;出现了负一屏&#xff0c;负一屏就是主页向左滑&#xff0c;出现了&#xff0c;如图的界面&#xff1a; 华为鸿蒙系统负一屏的界面 通过在手机中我的华为-搜索“开启或关闭智慧助手.今天&#xff08;负一屏&#…

win32汇编环境,窗口程序中自定义工具栏的使用示例

;运行效果 ;win32汇编环境,窗口程序中自定义工具栏的使用示例 ;工具栏一般放在菜单下面&#xff0c;相当于一个个小的对话框&#xff0c;当然你放在其它地方也可以。 ;原理是&#xff0c;创建一张BMP位图&#xff0c;比如下例用一张168*24的图&#xff0c;平均分成7部分&#x…

【PyQt】pyqt小案例实现简易文本编辑器

pyqt小案例实现简易文本编辑器 分析 实现了一个简单的文本编辑器&#xff0c;使用PyQt5框架构建。以下是代码的主要功能和特点&#xff1a; 主窗口类 (MyWindow): 继承自 QWidget 类。使用 .ui 文件加载用户界面布局。设置窗口标题、状态栏消息等。创建菜单栏及其子菜单项&…

2024最新版Node.js详细安装教程(含npm配置淘宝最新镜像地址)

一&#xff1a;Node.js安装 浏览器中搜索Nodejs&#xff0c;或直接用网址:Node.js — 在任何地方运行 JavaScript 建议此处下载长期支持版本&#xff08;红框内&#xff09;: 开始下载&#xff0c;完成后打开文件: 进入安装界面&#xff0c;在此处勾选&#xff0c;再点击n…

【HTML入门】Sublime Text 4与 Phpstorm

文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域&#xff0c…

JVS低代码逻辑引擎多种业务场景触发案例配置:涵盖列表页按钮、表单数据、流程审批、外部API接口调用等

逻辑引擎作为JVS低代码开发套件的核心组件&#xff0c;专注于业务逻辑的快速构建与实现&#xff0c;它扮演着程序配置与执行的核心角色&#xff0c;适用于多样化的应用场景。该逻辑引擎设计灵活&#xff0c;能够通过多种配置方式被触发&#xff0c;以精准响应各类业务需求并实现…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)

#作者&#xff1a;闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式&#xff08;Simple Queue&#xff09;工作队列模式&#xff08;Work Queue&#xff09;发布/订阅模式&#xff08;Publish/Subscribe&#xff…