TypeScript数据类型解析

前言

TypeScript 是一种静态类型的超集语言,扩展了 JavaScript 的功能。它提供了丰富的数据类型,包括基本数据类型和复杂数据类型。下面是对这些类型的详细解析和一些经典例子。


基本数据类型

  1. 布尔类型(Boolean)

    • 表示逻辑值,只能是truefalse

    • 示例:let isDone: boolean = false;

  2. 数字类型(Number)

    • 用于表示数值,可以是整数或浮点数。

    • TypeScript支持十进制、二进制、八进制和十六进制字面量。

    • 示例:let count: number = 10; let price: number = 3.99;

  3. 字符串类型(String)

    • 用于表示文本数据。

    • 可以使用双引号(“”)或单引号(‘’)表示字符串。

    • 示例:let message: string = "Hello, TypeScript!";

  4. 空值(Null 和 Undefined)

    • null表示没有任何对象值。

    • undefined表示一个变量被声明了,但没有被赋值。

    • 示例:let value1: null = null; let value2: undefined = undefined;

  5. 枚举类型(Enum)

    • 是对JavaScript标准数据类型的一个补充,用于定义一组命名的常量。

    • 示例:enum Color { Red, Green, Blue } let myColor: Color = Color.Green;

  6. 任意类型(Any)

    • 当在编程阶段不确定变量的类型时,可以使用any类型。

    • 示例:let notSure: any = 4; notSure = "maybe a string"; notSure = false;

  7. 空类型(Void)

    • 表示没有任何类型,一般用于说明函数的返回值不能是undefinednull之外的值。

    • 示例:function logMessage(): void { console.log("This is a log message."); }

  8. never

    • 表示位置类型,通常用于错误位置或总是抛出异常的函数。

    • 例子:function throwError(message: string): never { throw new Error(message); }

复杂数据类型

  1. 数组 - 表示元素集合,可以是固定类型或多种类型。

    • 同类型数组:let list: number[] = [1, 2, 3];

    • 泛型数组:let list: Array<number> = [1, 2, 3];

  2. 元组 - 已知元素数量和类型的数组。

    • 例子:let x: [string, number] = ["hello", 10];
  3. 枚举 - 一组命名的常数。

    • 例子:enum Color {Red, Green, Blue} let c: Color = Color.Green;
  4. 对象 - 表示无序的键值对集合。

    • 例子:let person = { name: "Alice", age: 21 };
  5. - 用于创建对象的模板。

    • 例子:

      
      class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}greet() {return "Hello, " + this.greeting;}}let greeter = new Greeter("world");
  6. 接口 - 定义了对象的结构,但不实现它。

    • 例子:

      
      interface Name {name: string;age: number;}function greeter(person: Name) {console.log("Hello, " + person.name + "! You are " + person.age + " years old.");}
  7. 函数 - 表示一段可重用的代码。

    • 例子:

      
      function add(x: number, y: number): number {return x + y;}
  8. 泛型 - 允许在创建类、接口或函数时使类型成为参数。

    • 例子:

      
      function identity<T>(arg: T): T {return arg;}let output = identity<string>("myString");
  9. 联合类型 - 表示一个值可以是几种类型之一。

    • 例子:let value: string | number = "hello"; // 也可以是 value = 42;
  10. 类型别名 - 为类型创建一个新的名称。

    • 例子:type Name = string; let userName: Name = "TypeScript";
  11. 字面量类型 - 表示原始值的精确类型。

    • 例子:let size: 'small' | 'medium' | 'large' = 'medium';
  12. 索引访问签名 - 允许你访问对象的属性,这些属性的键是字符串或数字。

    • 例子:

      
      interface StringArray {[index: number]: string;}let myArray: StringArray;myArray = ["Bob", "Fred"];
  13. 映射类型 - 创建一个新类型,其属性是从现有类型派生的。

    • 例子:

      
      type OptionsFlags = {[K in keyof typeof MY_OPTIONS]: boolean;};

总结

TypeScript通过丰富的数据类型系统,为JavaScript开发提供了更强的类型安全和代码可读性。基本数据类型和复杂数据类型各有其应用场景,开发者可以根据实际需要选择使用。通过上述经典例子的展示,希望能帮助读者更好地理解TypeScript的数据类型系统。

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

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

相关文章

小程序快速实现大模型聊天机器人

需求分析&#xff1a; 基于大模型&#xff0c;打造一个聊天机器人&#xff1b;使用开放API快速搭建&#xff0c;例如&#xff1a;讯飞星火&#xff1b;先实现UI展示&#xff0c;在接入API。 最终实现效果如下&#xff1a; 一.聊天机器人UI部分 1. 创建微信小程序&#xff0c…

MySQL笔记--多表查询

1--多表关系 多表关系基本上分为三种&#xff1a; 一对多&#xff08;多对一&#xff09;&#xff1b; 多对多&#xff1b; 一对一&#xff1b; 1-1--多对一 在多的一方建立外键&#xff0c;指向一的一方的主键&#xff1b; 1-2--多对多 建立第三张中间表&#xff0c;中间表至少…

记一次mysql故障排除和硬盘扩容

问题发现 某天早上发现我的博客突然不能访问了。简单看了一下可能是数据库连接出了问题。这台服务器比较节约&#xff0c;网站和数据库都放在一个机器上。讲道理不该出现数据库连接问题的。 解决思路 首先需要熟悉mysql各个文件保存位置 项目位置日志保存位置/var/log/mysq…

Qt网络通信、线程之间通信详解

一、 网络通信协议主要包括TCP和UDP&#xff0c;但更常用和可靠的是TCP协议。TCP是一种面向连接的、可靠的、面向流的传输协议&#xff0c;特别适合用于连续数据传输。在Qt中&#xff0c;网络通信主要通过QTcpSocket类和QTcpServer类来实现。 QTcpSocket类用于建立TCP客户端和…

【多模态】MiniCPM-V多模态大模型使用学习

MiniCPM-V模型使用 前言1. 模型文件下载和选择2. 环境安装配置3. 模型微调3.1 qlora微调minicpm-v-int43.2 lora微调minicpm-v3.3 merge_lora3.4 lora微调后量化int4 4. 模型推理4.1 huggingface API4.2 swift API(A) swift&#xff08;不支持batch inference&#xff09;(B) s…

C#多线程系列章节五

线程创建的几种写法 thread类 threadpool 线程池 task类 Thread t = new Thread(func); t.Start();//线程开始执行threadPool.QueueUserWorkItem(test)创建var t1 = new Task(() => test(“Task 1”));t.start();Task.Run(() => test(“Task 2”));Task.Factory.StartNew…

clickhouse-介绍、安装、数据类型、sql

1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 OLAP&#xff08;On-Line A…

Audition 2025 for Mac Au音频编辑软件

Mac分享吧 文章目录 Audition 2025 for Mac Au音频编辑软件 效果图展示一、Audition 2025 Au音频编辑软件 Mac电脑版——v25.0⚠️注意事项&#xff1a;1️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件2.1 安装AntiCC_5.9_简化版&#xff0c;操作步骤如下&#xff1a;2.2…

JAVA题目笔记(二十五)网络编程综合小练qa!3EF TG6U8.L;

一、多发多收 客户端&#xff1a; import java.io.*; import java.net.Socket; import java.util.Scanner;public class Test1_2 {public static void main(String[] args) throws IOException {//TCP发送端Scanner scnew Scanner(System.in);String b;//创建Socket对象Socket…

决策树的生成与剪枝

决策树的生成与剪枝 决策树的生成生成决策树的过程决策树的生成算法 决策树的剪枝决策树的损失函数决策树的剪枝算法 代码 决策树的生成 生成决策树的过程 为了方便分析描述&#xff0c;我们对上节课中的训练样本进行编号&#xff0c;每个样本加一个ID值&#xff0c;如图所示…

ES6中的map和set

Set ES6 提供了新的数据结构 Set。它类似于数组&#xff0c;但是成员的值都是唯一的&#xff0c;没有重复的值。 Set本身是一个构造函数&#xff0c;用来生成 Set 数据结构。 以下代码 const s new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x > s.add(x));for (let i of s…

C# 用语句初始化数据库,创建库和表 MySQL示例

目录 简要说明 代码实现 简要说明 有时候项目中&#xff0c;在部署过程中&#xff0c;单独用工具去创建数据库和表&#xff0c;会消耗很多人力和时间&#xff0c;也不利于后期程序迭代去增加数据表&#xff0c; 那可以在程序启动的时候&#xff0c;去判断数据库和表是否存在…

基于SpringBoot的疫苗在线预约功能实现十二

一、前言介绍&#xff1a; 1.1 项目摘要 随着全球公共卫生事件的频发&#xff0c;如新冠疫情的爆发&#xff0c;疫苗成为了预防和控制传染病的重要手段。传统的疫苗预约方式&#xff0c;如人工挂号或电话预约&#xff0c;存在效率低、易出错、手续繁琐等问题&#xff0c;无法…

java技术点

1 mysql的索引下推: 就是从减少服务层的的回表操作&#xff0c;在引擎层实现联表查询 2 可重入锁: 就是当前:z线程可重复获取锁&#xff0c;比如递归函数里有锁&#xff0c;防止死锁 3 解决redis脑裂: 参数 持久化 优化网络和硬件 4 加密&#xff1a; MD5 不可解 对称算法…

MySQL基础 -----MySQL数据类型

目录 INT类型 tinyint类型 类型大小范围 测试tinyint类型数据 float类型 测试&#xff1a; 测试正常数据范围的数据 测试插入范围超过临界值的数据&#xff1a; 测试float类型的四舍五入 ​编辑 decimal类型 同样测试&#xff1a; 字符串类型 char类型 测试&…

代码开发相关操作

使用Vue项目管理器创建项目&#xff1a;&#xff08;vue脚手架安装一次就可以全局使用&#xff09; windowR打开命令窗口&#xff0c;输入vue ui&#xff0c;进入GUI页面&#xff0c;点击创建-> 设置项目名称&#xff0c;在初始化git下面输入&#xff1a;init project&…

Pandas系列|第一期:列值的前N码模糊匹配

背景&#xff1a;物料清单&#xff08;BOM&#xff09;在做关键器件筛选时&#xff0c;需要筛选出编码的前N码模糊匹配给定的前缀list的所有bom行 关键点&#xff1a;前N码模糊匹配 df[col].str.startswith(tuple(item_prefix_list)&#xff09; 解决方法&#xff1a; impor…

如何在 Ubuntu 22.04 上安装和使用 Rust 编程语言环境

简介 Rust 是一门由 Mozilla 开发的系统编程语言&#xff0c;专注于性能、可靠性和内存安全。它在没有垃圾收集的情况下实现了内存安全&#xff0c;这使其成为构建对性能要求苛刻的应用程序&#xff08;如操作系统、游戏引擎和嵌入式系统&#xff09;的理想选择。 接下来&…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文&#xff0c;如果开发人员发生流动&#xff0c;很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先&#xff0c;我们利用AES工具生成一个随机秘钥&#…

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager&#xff08;Virtual Machine Manager&#xff09;是一个图形用户界面应用程序&#xff0c;通过libvirt管理虚拟机&#xff08;即作为libvirt的图形前端&#xff09; 因为要在Linux arm环境做测试&#xff0c;记录下virt-manager配置arm虚拟机的过程 先在VMWare中…