当前位置: 首页 > news >正文

【TS】TypeScript 有哪些类型

TypeScript 是 JavaScript 的一个超集,它添加了静态类型定义以及其他功能,使代码更加健壮和可维护。以下是 TypeScript 中的一些主要类型:

  1. 基础类型

    • boolean:布尔值,truefalse
    • number:数字,可以是整数或浮点数。
    • string:文本类型。
    • symbol:唯一的标识符,通常用于对象的属性名。
    • nullundefined:分别表示空值和未定义的值。注意,nullundefined 是各自独特的类型,并不是 numberstring 的子类型。
    • void:表示没有任何类型。通常用于表示不返回任何值的函数的返回类型。
  2. 数组和元组

    • Array<T>T[]:表示一个元素类型为 T 的数组。
    • [T, U, ...](元组):表示一个固定长度的数组,其中每个位置上的元素类型都是已知的。
  3. 枚举(Enum)

    • 枚举类型允许你定义一组命名的常量。使用 enum 关键字来定义枚举类型。
  4. 对象类型

    • 对象类型可以包括一组属性,每个属性都有特定的类型。
    • 可以通过接口(interface)或类型别名(type)来定义对象类型。
  5. 接口(Interface)

    • 接口是一种定义对象形状的方式,它可以定义一组属性、方法或函数的签名。
    • 接口也可以被类实现,以确保类具有特定的结构。
  6. 函数类型

    • 函数类型可以定义函数的参数和返回值的类型。
    • 也可以定义函数的可选参数、剩余参数等。
  7. 类类型

    • TypeScript 支持基于类的面向对象编程,你可以定义类并创建类的实例。
    • 类的属性和方法可以有特定的类型。
  8. 泛型(Generics)

    • 泛型允许你定义灵活、可重用的组件,这些组件可以处理多种类型的数据。
    • 泛型通常用 TUV 等作为类型参数,并在函数、接口或类中使用它们。
  9. 交叉类型(Intersection Types)

    • 交叉类型是将多个类型合并为一个类型。这允许你合并已有的类型来创建一个具有多个类型所有特性的新类型。
  10. 联合类型(Union Types)

    • 联合类型表示一个值可以是几种类型之一。联合类型使用 | 分隔每个类型。
  11. 类型别名(Type Aliases)

    • 类型别名是给一个类型起一个新的名字。类型别名有时和接口很相似,但是可以作用于原始类型、联合类型、交叉类型或字面量类型等。
  12. 字面量类型(Literal Types)

    • 字面量类型允许你指定变量只能是特定的值。比如,字符串字面量类型允许你指定字符串必须的固定值。
  13. 索引签名(Index Signatures)

    • 索引签名用于描述对象索引的类型。
  14. 映射类型(Mapped Types)

    • 映射类型是在一个对象类型上通过类型运算创建新的对象类型。
  15. 条件类型(Conditional Types)

    • 条件类型根据条件返回不同的类型。它们与 JavaScript 中的三元条件运算符类似,但在类型级别上工作。
  16. 类型推断(Type Inference)

    • TypeScript 会自动推断出变量的类型,如果你没有显式指定的话。
  17. 非空断言操作符(Non-Null Assertion Operator)

    • 使用 ! 非空断言操作符可以告诉 TypeScript 某个变量不可能是 nullundefined
  18. 类型保护(Type Guards)

    • 类型保护是一种表达式,它们执行一些运行时检查并缩小类型范围。

这些类型使得 TypeScript 在静态类型检查和编译时能够提供更丰富的错误信息,帮助开发者在编写代码时捕获错误,并构建更加健壮和可维护的应用程序。

相关文章:

【TS】TypeScript 有哪些类型

TypeScript 是 JavaScript 的一个超集&#xff0c;它添加了静态类型定义以及其他功能&#xff0c;使代码更加健壮和可维护。以下是 TypeScript 中的一些主要类型&#xff1a; 基础类型 boolean&#xff1a;布尔值&#xff0c;true 或 false。number&#xff1a;数字&#xff0c…...

ErrnoException: open failed: EPERM (Operation not permitted)

在应用权限管理里面没有文件读写权限 <!-- // 1. 适配分区存储的特性&#xff0c;并在清单文件中注册一个 meta-data 属性--> <!-- // <meta-data android:name"ScopedStorage" android:value"true" />--> <!-- …...

乘法与位运算

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 题目描述&#xff1a; 进行一个运算单元的电路设计&#xff0c;A[7:0]*11111011&#xff0c;尽量用最少的资源实现&#xff0c;写出对应的 RTL 代码。 信号示意&#xff1a; A信号输入 B 信号输出…...

HTML(20)——定位

定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 定位模式&#xff1a;position边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 相对定位 position&#xff1a;relative 改变位置的参照物是自己原来的位置&#xff0c;并且不脱标占位&#x…...

精通scikit-learn:模型持久化与选择的最佳实践

在机器学习项目中&#xff0c;模型的持久化和选择是两个关键环节&#xff0c;它们直接影响到模型的可维护性、可扩展性和性能。scikit-learn作为Python中一个流行的机器学习库&#xff0c;提供了丰富的工具来支持模型的持久化和选择。本文将深入探讨scikit-learn中模型持久化和…...

JMeter安装与使用

安装包下载&#xff1a;https://pan.xunlei.com/s/VNigSM9IEjqNBVkw8by6i-LoA1?pwdu6gq# 也可以官网下载&#xff1a; 1.解压安装包 2.打开方式 &#xff08;1&#xff09;bin->ApacheJMeter.jar->打开界面 &#xff08;2&#xff09;如果&#xff08;1&#xff09;打…...

ubuntu 20.04 访问csdn报错 Secure connection failed

打扰了&#xff0c;csdn服务器的问题&#xff0c;和源没关系&#xff0c;后面又重新测试了一下。刚好那一刻网站连上了。 暂时没有好办法&#xff0c;等待一段时间就连上了&#xff0c;改host似乎也不太行。 问题原因&#xff1a; 我一边更新源 sudo apt update & apt up…...

Linux下如何设置可执行文件和库文件的环境变量?

在Linux系统中&#xff0c;可执行文件和库文件的查找路径是由环境变量控制的&#xff0c;其中最重要的是PATH环境变量用于可执行文件&#xff0c;而动态库的查找路径则由LD_LIBRARY_PATH环境变量决定。下面分别介绍这两个方面&#xff1a; 可执行文件的搜索路径&#xff08;PA…...

gsap动画库对threejs模型的应用

前言 公司的一个3D编辑器项目&#xff0c;要在three模型上加一些补间动画。做了一些调研&#xff0c;最终选择了gsap&#xff0c;其丰富的缓动函数&#xff0c;强大的动画效果和兼容性&#xff0c;更适合公司的需求。 查看gsap文档&#xff0c;发现所有的例子都是针对dom元素…...

网管工作实践_02_IP/MAC地址管理工具

1、ipconfig命令格式及参数 ipconfig是内置于Windows的TCP/IP应用程序&#xff0c;用于显示本地计算机网络适配器的MAC地址和IP地址等配置信息&#xff0c;这些信息一般用来榆验手动配置的TCP/IP设置是否正确。当在网络中使用 DHCP服务时&#xff0c;IPConfig可以检测计算机中分…...

MySQL【触发器、存储过程、函数、范式】

day53 MySQL 触发器 创建触发器&#xff1a;&#xff08;before &#xff1a; 前置触发器、after &#xff1a;后置触发器&#xff09; 语法&#xff1a; delimiter xx 指定分隔符xxcreate trigger 触发器名 [before | after] 触发事件 on 表名 for each row 执行语句begin…...

Shopee API接口——获取商家店铺商品列表

一、引言 在跨境电商领域&#xff0c;Shopee作为东南亚地区领先的电商平台&#xff0c;为众多商家提供了广阔的市场和丰富的销售机会。本文将详细介绍如何通过Shopee API获取商家店铺商品列表&#xff0c;并探讨其应用场景。 二、核心功能介绍 Shopee API获取商家店铺商品列…...

linux基础知识14

认知权限信息 通过ls -l可以以列表形式查看内容&#xff0c;并显示权限细节r代表读权限&#xff0c;针对文件可以查看文件内容&#xff0c;针对文件夹&#xff0c;可以查看文件夹内容&#xff0c;如ls命令w代表写权限&#xff0c;针对文件表示可以修改此文件&#xff0c;针对文…...

Qt开发入门与环境搭建(基础篇)

文章目录 Qt开发入门与环境搭建(基础篇)1.1 Qt是什么?1.2 Qt版本介绍1.3 Qt开发环境安装1.4 开发第一个QT程序1.5 调试输出1.6 QT Creator常用的快捷键1.7 QT帮助文档1.8 UI设计师使用1.9 按钮控件组1.10 布局控件组1.11 基本布局控件1.12 UI设计师的布局功能Qt开发入门与环…...

CentOS7环境Maxwell的安装及使用

目录 Maxwell的安装 下载安装包 解压安装包 配置环境变量 启用MySQL Binlog 创建Maxwell所需数据库和用户 配置Maxwell Maxwell的使用 启动Kafka集群 Maxwell启停 Maxwell启停脚本 MySQL数据准备 Kafka开启消费者 全量数据同步 增量数据同步 启动Kafka消费者 …...

python环境变量

目录 python环境变量 python-opencv cuda cudnn pytorch pycharm 激活ok了 pyqt5 labelimg notepad gpu-z python 3.6或3.7 标注,文件路径不能有 python环境变量 import os import syscurrent_dir = os.path.dirname(os.path.abspath(__file__))paths = [os.path.abspath(…...

用进程和线程完成TCP进行通信操作及广播和组播的通信

进程 代码 #include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>#includ…...

浅谈Tomcat

文章目录 一、什么是Tomcat&#xff1f;二、Tomcat的下载安装三、使用tomcat访问资源 一、什么是Tomcat&#xff1f; Tomcat 就是一个 HTTP 服务器。 前面我们聊了HTTP服务器&#xff0c;像我们在网页输入URL&#xff0c;其实就是在给人家的HTTP服务器发送请求&#xff0c;既…...

C++精解【7】

文章目录 eigen矩阵初始化多维矩阵矩阵和向量size固定大小or 动态大小Matrix类六个模板参数初始化向量元素类型 参考文献 eigen 矩阵初始化 多维矩阵 数组 MatrixXi a { // construct a 2x2 matrix{1, 2}, // first row{3, 4} // second row }; Matrix<do…...

堆箱子00

题目链接 堆箱子 题目描述 注意点 将箱子堆起来时&#xff0c;下面箱子的宽度、高度和深度必须大于上面的箱子 解答思路 初始想到深度优先遍历&#xff0c;最后超时了参照题解使用动态规划&#xff0c;先将盒子从小到大进行排序&#xff0c;dp[i]存储的是到第i个箱子时堆箱…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

未授权访问事件频发,我们应当如何应对?

在当下&#xff0c;数据已成为企业和组织的核心资产&#xff0c;是推动业务发展、决策制定以及创新的关键驱动力。然而&#xff0c;未授权访问这一隐匿的安全威胁&#xff0c;正如同高悬的达摩克利斯之剑&#xff0c;时刻威胁着数据的安全&#xff0c;一旦触发&#xff0c;便可…...