【前端】【Ts】【知识点总结】TypeScript知识总结
-
一、总体概述
- TypeScript 是 JavaScript 的超集,主要通过静态类型检查和丰富的类型系统来提高代码的健壮性和可维护性。
- 它涵盖了从基础数据类型到高级类型、从函数与对象的类型定义到类、接口、泛型、模块化及装饰器等众多知识点。
- 掌握这些内容有助于编写更清晰、结构更合理、错误更少的代码。
-
二、详细知识点总结
-
(一)基础数据类型
- (1) 原始类型
- 包括 number、string、boolean、null、undefined、symbol、bigint。
- (2) 对象类型
- 对象、数组、元组、函数等都是引用类型。
- (1) 原始类型
-
(二)函数与作用域
- (1) 函数定义
- 可使用函数声明、函数表达式或箭头函数。
- 支持可选参数、默认参数以及剩余参数。
- (2) 返回值类型
- 可通过 void 标注无返回值函数,使用 never 表示永远不会返回(如抛异常或无限循环)。
- (1) 函数定义
-
(三)接口 (interface)
- (1) 对象类型定义
- 用于声明对象属性及其类型,提升代码重用性和可读性。
- (2) 函数与数组类型控制
- 可约束函数的参数和返回值,也可用于定义数组索引类型。
- (3) 属性修饰
- 支持可选属性(?)和只读属性(readonly)。
- (4) 继承
- 通过 extends 实现单继承或多继承,扩展已有接口。
- (1) 对象类型定义
-
(四)类 (Class)
- (1) 基本概念
- 包括构造函数、实例属性与方法。
- (2) 访问修饰符
- public(公有)、private(私有)、protected(受保护),控制成员的可见性。
- (3) 静态成员与抽象类
- 静态属性与方法属于类本身,抽象类用于定义抽象方法供子类实现。
- (1) 基本概念
-
(五)泛型 (Generics)
- (1) 泛型函数
- 使函数参数和返回值具有灵活的类型。
- (2) 泛型接口与类
- 用于在接口或类中引入类型参数,增强复用性。
- (3) 泛型约束
- 限制泛型类型必须满足某些条件(如具有某些属性)。
- (1) 泛型函数
-
(六)枚举 (Enums)
- (1) 数字枚举
- 默认从 0 开始,每个枚举成员自动递增,可进行反向映射。
- (2) 字符串枚举
- 枚举成员为字符串常量,具有更好的语义。
- (1) 数字枚举
-
(七)高级类型
- (1) 联合类型与交叉类型
- 联合类型使用 “|” 限制变量取值为多个类型中的一种;交叉类型 “&” 则用于组合多个类型的特性。
- (2) 字面量类型
- 限制变量只能取具体的字面量值,常与联合类型一起使用。
- (3) 类型别名 (type alias)
- 用于给复杂类型或联合类型取别名,便于复用和维护。
- (4) interface 与 type 的区别
- 接口侧重于描述对象结构,支持声明合并;类型别名适用于任何类型,但不支持合并。
- (1) 联合类型与交叉类型
-
(八)类型推断与类型兼容
- (1) 类型推断
- 编译器根据变量赋值自动推断类型,简化代码书写。
- (2) 类型兼容性
- 不同类型之间的兼容判断,决定了赋值、参数传递时的类型匹配。
- (1) 类型推断
-
(九)类型保护
- (1) 内置类型保护
- 使用 typeof、instanceof、in 等操作符判断类型。
- (2) 用户自定义类型保护
- 利用返回类型为 x is T 的函数,实现自定义的类型保护逻辑。
- (1) 内置类型保护
-
(十)装饰器 (Decorators)
- (1) 装饰器概念
- 通过 @ 符号为类、方法、属性、参数添加元数据或行为,常用于框架中。
- (2) 使用条件
- 需要开启 experimentalDecorators 编译选项。
- (1) 装饰器概念
-
(十一)模块系统与命名空间
- (1) 模块化
- 支持 ES6 模块(import/export)和 CommonJS 模块,实现代码分离。
- (2) 命名空间
- 用于组织代码内部模块,避免全局污染。
- (1) 模块化
-
(十二)工具类型
- (1) 常见工具类型包括:
- Partial:将所有属性设为可选。
- Readonly:将所有属性设为只读。
- Record:构造键值对类型。
- Pick 与 Omit:从类型中挑选或剔除某些属性。
- 其他如 Exclude、Extract、NonNullable、ReturnType、InstanceType 等。
- (1) 常见工具类型包括:
-
(十三)其他关键概念
- (1) any 与 unknown
- any 类型允许任意赋值,缺乏类型保护;unknown 类型更安全,需经过类型断言或检查后才能使用。
- (2) 类型断言
- 使用 as 或尖括号语法,将一个值指定为某一具体类型,提升类型判断准确性。
- (1) any 与 unknown
-
-
三、总体回顾
- TypeScript 的核心在于利用静态类型系统提前捕获错误,通过丰富的类型系统(包括基础类型、高级类型、接口、类、泛型等)以及工具类型来构造灵活且健壮的代码结构。
- 掌握这些知识点不仅可以提高代码质量,还能在大型项目中更好地管理和维护代码。
- 通过不断实践和总结,理解每个知识点的用途和最佳实践,将有助于编写出既安全又高效的 TypeScript 应用。
相关文章:
【前端】【Ts】【知识点总结】TypeScript知识总结
一、总体概述 TypeScript 是 JavaScript 的超集,主要通过静态类型检查和丰富的类型系统来提高代码的健壮性和可维护性。它涵盖了从基础数据类型到高级类型、从函数与对象的类型定义到类、接口、泛型、模块化及装饰器等众多知识点。掌握这些内容有助于编写更清晰、结…...
【前端】【Ts】TypeScript的关键知识点
一、知识点总结 (一)void 与 never 的区别 (1) void:声明函数无返回值,但可以走到 return 行。(2) never:表示函数不会走到 return 行,常用于抛异常或无限循环。 (二)字面量类型与联…...
C++,STL,【目录篇】
文章目录 一、简介二、内容提纲第一部分:STL 概述第二部分:STL 容器第三部分:STL 迭代器第四部分:STL 算法第五部分:STL 函数对象第六部分:STL 高级主题第七部分:STL 实战应用 三、写作风格四、…...
2502vim,vim文本对象中文文档
介绍 文本块用户(textobj-user)是一个可帮助你毫不费力地创建自己的文本对象的Vim插件. 因为有许多陷阱需要处理,很难创建文本对象.此插件隐藏了此类细节,并提供了声明式定义文本对象的方法. 你可用正则式来定义简单的文本对象,或使用函数来定义复杂的文本对象.如… 文本对…...
【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中的一个组件。中间件…...
什么是ce认证
CE认证,即只限于产品不危及人类、动物和货品的安全方面的基本安全要求,而不是一般质量要求,协调指令只规定主要要求,一般指令要求是标准的任务。因此准确的含义是:CE标志是安全合格标志而非质量合格标志。是构成欧洲指令核心的&qu…...
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(); // 确保列表是排序的,因为双指针法要求输入是…...
老游戏回顾:G2
一个老的RPG游戏。 剧情有独到之处。 ------- 遥远的过去,古拉纳斯将希望之光给予人们,人类令希望之光不断扩大,将繁荣握在手中。 但是,暗之恶魔巴鲁玛将光从人类身上夺走。古拉纳斯为了守护人类与其展开了一场激战,…...
行为驱动开发(BDD)如何提高自动化测试效率
在软件开发的过程中,自动化测试一直扮演着至关重要的角色。随着需求变化日益复杂、开发周期不断压缩,如何提升自动化测试的效率和准确性成为了现代软件开发团队的核心挑战之一。行为驱动开发(BDD,Behavior Driven Development&…...
大语言模型的「幻觉」(Hallucination)是指模型在生成内容时
大语言模型的「幻觉」(Hallucination)是指模型在生成内容时,输出看似合理但实际错误、虚构或与事实不符的信息。这种现象并非模型有意欺骗,而是由其底层技术原理和训练方式导致的必然结果。 幻觉的核心特征 类型示例事实性错误生…...
[25] cuda 应用之 nppi 实现图像色彩调整
[25] cuda 应用之 nppi 实现图像色彩调整 在 NPPI(NVIDIA Performance Primitives)中,图像色彩调整通常包括以下几种操作: 亮度调整:增加或减少图像的亮度。对比度调整:增强或减弱图像的对比度。饱和度调…...
Redis常见数据类型与编码方式
⭐️前言⭐️ 本小节围绕Redis中常见的数据类型与编码方式展开。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主日常练习代码均已上传GitHu…...
inter i5 6300U 可以干嘛
Intel Core i5-6300U 是一款发布于 2015 年的双核四线程处理器,属于 Intel 第六代 Skylake 架构的低功耗移动处理器(TDP 15W)。虽然它不是最新的处理器,但在日常使用中仍然可以胜任许多任务。以下是它适合的用途: 1. 日…...
不可控的内存分配(CWE-789)
漏洞描述:内存分配的大小受外部控制的输入数据影响,且程序没有指定内存分配大小的上限 漏洞风险:攻击者可以使程序分配大量的内存,程序可能会因为内存资源不足而奔溃。 修复或规避建议: 设定合理的内存分配上限&…...
大型三甲医院算力网络架构的深度剖析与关键技术探索
一、引言 1.1 研究背景与意义 1.1.1 医疗信息化发展趋势 随着信息技术的迅猛发展,全球医疗行业正经历着深刻的数智化转型。数字化转型已成为医疗行业提升服务质量、优化运营效率、推动医学科研创新的关键驱动力。从电子病历系统的普及到远程医疗的广泛应用&#…...
获取要素类或表中的字段列表
要素类和表中往往包含一个或多个属性信息,可以通过ListFields()函数获取要素类中的字段列表. 操作方法: 1.打开IDLE,新建一个脚本窗口 2.导入arcpy模块 3.设置工作空间 arcpy.env.workspace "" 4.在try语句中对<>要素调用ListFields()方法 try:fieldlis…...
Android原生开发入门
1. 资源地址 Android官方教程Android参考手册 2. 必看基础模块 应用基础知识View 绑定 :绑定相当于Qt中的ui文件生成界面代码的机制,Qt中的ucc会自动将ui文件编译成ui_xxxx.h文件,Android开发中也一样。 Android中自动生成的代码在&#x…...
网络设备的安全加固
设备的安全始终是信息网络安全的一个重要方面,攻击者往往通过控制网络中设备来破坏系统和信息,或扩大已有的破坏。网络设备包括主机(服务器、工作站、PC)和网络设施(交换机、路由器等)。 一般说来ÿ…...
验证工具:VCS与Verdi介绍
VCS和Verdi都是Synopsys公司旗下的工具,在集成电路设计和验证领域发挥着重要作用。 VCS VCS,全称Verilog Compile Simulator,是Synopsys公司的一款Verilog仿真工具。它具有以下主要功能: 编译和仿真:VCS能够对Verilog设计代码和testbench进行编译,生成simv二进制可执行…...
CSV数据分析智能工具(基于OpenAI API和streamlit)
utils.py: from langchain_openai import ChatOpenAI from langchain_experimental.agents.agent_toolkits import create_csv_agent import jsonPROMPT_TEMPLATE """你是一位数据分析助手,你的回应内容取决于用户的请求内容。1. 对于文…...
【Day31 LeetCode】动态规划DP Ⅳ
一、动态规划DP Ⅳ 1、最后一块石头的重量II 1049 这题有点像脑筋急转弯,尽量让石头分成重量相同的两堆(尽可能相同),相撞之后剩下的石头就是最小的。明白这一点,就与上一篇博客里的划分等和数组很相似。划分等和数组…...
产品经理的人工智能课 02 - 自然语言处理
产品经理的人工智能课 02 - 自然语言处理 1 自然语言处理是什么2 一个 NLP 算法的例子——n-gram 模型3 预处理与重要概念3.1 分词 Token3.2 词向量化表示与 Word2Vec 4 与大语言模型的交互过程参考链接 大语言模型(Large Language Models, LLMs)是自然语…...
华为手机nova9,鸿蒙系统版本4.2.0.159,智慧助手.今天版本是14.x,如何卸载智慧助手.今天?
手欠,将手机鸿蒙系统升级到4.2.0.159后,出现了负一屏,负一屏就是主页向左滑,出现了,如图的界面: 华为鸿蒙系统负一屏的界面 通过在手机中我的华为-搜索“开启或关闭智慧助手.今天(负一屏&#…...
C#面试常考随笔13: 泛型的主要约束和次要约束是什么?
在 C# 泛型中,主要约束和次要约束用于限制泛型类型参数的使用,确保类型参数满足一定的条件,从而提高代码的可靠性和可维护性。以下是主要约束和次要约束的详细介绍: 主要约束 引用类型约束(class)&#x…...
win32汇编环境,窗口程序中自定义工具栏的使用示例
;运行效果 ;win32汇编环境,窗口程序中自定义工具栏的使用示例 ;工具栏一般放在菜单下面,相当于一个个小的对话框,当然你放在其它地方也可以。 ;原理是,创建一张BMP位图,比如下例用一张168*24的图,平均分成7部分&#x…...
【PyQt】pyqt小案例实现简易文本编辑器
pyqt小案例实现简易文本编辑器 分析 实现了一个简单的文本编辑器,使用PyQt5框架构建。以下是代码的主要功能和特点: 主窗口类 (MyWindow): 继承自 QWidget 类。使用 .ui 文件加载用户界面布局。设置窗口标题、状态栏消息等。创建菜单栏及其子菜单项&…...
