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

  • 一、总体概述

    • 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.mzph.cn/news/894695.shtml

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

相关文章

基于Springboot+vue的租车网站系统

基于SpringbootVue的租车网站系统是一个现代化的在线租车平台,它结合了Springboot的后端开发能力和Vue的前端交互优势,为用户和汽车租赁公司提供了一个高效、便捷、易用的租车体验和管理工具。以下是对该系统的详细介绍: 一、系统架构 后…

蓝桥杯之c++入门(二)【输入输出(上)】

目录 前言1.getchar和 putchar1.1 getchar()1.2 putchar() 2.scanf和 printf2.1 printf2.1.1基本用法2.1.2占位符2.1.3格式化输出2.1.3.1 限定宽度2.1.3.2 限定小数位数 2.2 scanf2.2.1基本用法2.2.2 占位符2.2.3 scanf的返回值 2.3练习练习1&#xff1a…

Docker数据卷管理及优化

一、基础概念 1.docker数据卷是一个可供容器使用的特殊目录,它绕过了容器的文件系统,直接将数据存在宿主机上。 2.docker数据卷的作用: 数据持久化:即使容器被删除或重建数据卷中的数据仍然存在 数据共享:多个容器可以…

java:mysql切换达梦数据库(五分钟适配完成)

背景 因为项目需要国产数据库的支持,选择了达梦数据库,由于我们之前使用的是MySQL今天我们就来说一说,如何快速的切换到达梦数据库,原本这一章我打算写VIP章节的后续想想,就纯分享。毕竟是国产数据库迁移数据库 这里…

在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问

在游戏本6G显存上本地部署Deepseek,运行一个14B大语言模型,并使用API访问 环境说明环境准备下载lmstudio运行lmstudio 下载模型从huggingface.co下载模型 配置模型加载模型测试模型API启动API服务代码测试 deepseek在大语言模型上的进步确实不错&#xf…

[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;因为双指针法要求输入是…

C# OpenCV机器视觉:学生注意力监测

小王是一位充满活力的年轻教师&#xff0c;刚接手了一个新班级。他满心欢喜地准备在课堂上大显身手&#xff0c;把自己的知识毫无保留地传授给学生。可没上几节课&#xff0c;他就发现了一个让人头疼的问题&#xff1a;课堂上总有那么几个学生注意力不集中&#xff0c;要么偷偷…

【嵌入式】C语言多文件编程与内联函数

文章目录 0 前言1 从C语言编译说起2 重复定义错误&#xff08;ODR violation&#xff09;和条件编译3 内联函数inline和static inline4 总结 0 前言 最近在研究ARM内核代码时&#xff0c;看到core_cm3.h中有大量的内联函数&#xff0c;为此查阅了很多资料&#xff0c;也和朋友讨…

10分钟本地部署Deepseek-R1

10分钟本地部署DeepSeek-R1 什么是DeepSeek-R1快速本地部署DeepSeek-R1Ollama下载Ollama安装检查是否安装成功 安装DeepSeek-R1模型模型使用测试 什么是DeepSeek-R1 DeepSeek-R1是中国的深度求索&#xff08;DeepSeek&#xff09;公司开发的智能助手。其具有极佳的语义理解和生…

Office / WPS 公式、Mathtype 公式输入花体字、空心字

注&#xff1a;引文主要看注意事项。 1、Office / WPS 公式中字体转换 花体字 字体选择 “Eulid Math One” 空心字 字体选择 “Eulid Math Two” 2、Mathtype 公式输入花体字、空心字 2.1 直接输入 花体字 在 mathtype 中直接输入 \mathcal{L} L \Large \mathcal{L} L…

【C++】STL——vector底层实现

目录 &#x1f495; 1.vector三个核心 &#x1f495;2.begin函数&#xff0c;end函数的实现&#xff08;简单略讲&#xff09; &#x1f495;3.size函数&#xff0c;capacity函数的实现 &#xff08;简单略讲&#xff09; &#x1f495;4.reserve函数实现 &#xff08;细节…

7、怎么定义一个简单的自动化测试框架?

定义一个简单的自动化测试框架可以从需求理解、框架设计、核心模块实现、测试用例编写和集成执行等方面入手&#xff0c;以下为你详细介绍&#xff1a; 1. 明确框架需求和范围 确定测试类型&#xff1a;明确框架要支持的测试类型&#xff0c;如单元测试、接口测试、UI 测试等…

AI取代人类?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

C语言-----数据结构从门到精通

1.数据结构基本概念 数据结构是计算机中存储、组织数据的方式&#xff0c;旨在提高数据的访问和操作效率。它是实现高效算法和程序设计的基石。 目标:通过思维导图了解数据结构的知识点,并掌握。 1.1逻辑结构 逻辑结构主要四种类型: 集合&#xff1a;结构中的数据元素之…

华为小米vivo向上,苹果荣耀OPPO向下

日前&#xff0c;Counterpoint发布的手机销量月度报告显示&#xff0c;中国智能手机销量在2024年第四季度同比下降3.2%&#xff0c;成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说&#xff0c;他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…

每日一博 - 三高系统架构设计:高性能、高并发、高可用性解析

文章目录 引言一、高性能篇1.1 高性能的核心意义1.2 影响系统性能的因素1.3 高性能优化方法论1.3.1 读优化&#xff1a;缓存与数据库的结合1.3.2 写优化&#xff1a;异步化处理 1.4 高性能优化实践1.4.1 本地缓存 vs 分布式缓存1.4.2 数据库优化 二、高并发篇2.1 高并发的核心意…

吴恩达深度学习——有效运作神经网络

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习所用。 文章目录 训练集、验证集、测试集偏差、方差正则化正则化参数为什么正则化可以减少过拟合Dropout正则化Inverted Dropout其他的正则化方法数据增广Early stopping 归一化梯度消失与梯度爆…

基于RK3588/RK3576+MCU STM32+AI的储能电站电池簇管理系统设计与实现

伴随近年来新型储能技术的高质量规模化发展&#xff0c;储能电站作为新能源领域的重要载体&#xff0c; 旨在配合逐步迈进智能电网时代&#xff0c;满足电力系统能源结构与分布的创新升级&#xff0c;给予相应规模 电池管理系统的设计与实现以新的挑战。同时&#xff0c;电子系…

K8s 分布式存储后端(K8s Distributed Storage Backend)

K8s 分布式存储后端 在 K8s 中实现分布式存储后端对于管理跨集群的持久数据、确保高可用性、可扩展性和可靠性至关重要。在 K8s 环境中&#xff0c;应用程序通常被容器化并跨多个节点部署。虽然 K8s 可以有效处理无状态应用程序&#xff0c;但有状态应用程序需要持久存储来维护…

FFmpeg:多媒体处理的瑞士军刀

FFmpeg&#xff1a;多媒体处理的瑞士军刀 前言 FFmpeg 是一个功能强大且跨平台的开源多媒体框架&#xff0c;广泛应用于音视频处理领域。 它由多个库和工具组成&#xff0c;能够处理各种音视频格式&#xff0c;涵盖编码、解码、转码、流处理等多种操作。 无论是专业视频编辑…