【TypeScript】 数据类型

文章目录

  • 数据类型
    • 1. TypeScript Number
      • 进制表示:
      • 常用的内置属性:
      • 常用的内置方法:
    • 2. TypeScript String
      • 字符串的创建:
      • 常用的内置属性和方法:
    • 3. TypeScript Array
      • 数组的声明与使用:
      • 常用的内置属性和方法:
    • 4. TypeScript Map
      • `Map` 用于存储键值对,其中键和值可以是任意类型。
      • 常用的内置属性和方法:
    • 5. TypeScript Tuple(元组)
      • 元组用于存储不同类型的固定数量的元素。
      • 常用的内置方法:
    • 6.联合类型
    • 学习总结

数据类型

1. TypeScript Number

Number对象是原始数值的包装对象。以下是一些Number的例子:

let num1: number = 123; // 整数
let num2: number = 0.456; // 浮点数// Number类型还可以表示特殊的值,如Infinity、-Infinity和NaN(非数字)
let notANumber: number = NaN;
let infinity: number = Infinity;

进制表示:

// Number 类型还支持二进制、八进制、十进制和十六进制字面量
let binary: number = 0b1010; // 二进制,输出 10
let octal: number = 0o744; // 八进制,输出 484
let decimal: number = 6; // 十进制,输出 6
let hex: number = 0xf00d; // 十六进制,输出 61453

常用的内置属性:

  1. Number.MAX_VALUE: 表示可表示的最大数字。

    console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
    
  2. Number.MIN_VALUE: 表示最小的正数。

    console.log(Number.MIN_VALUE); // 5e-324
    
  3. Number.NaN: 表示 “非数字” 值。

    console.log(Number.NaN); // NaN
    
  4. Number.POSITIVE_INFINITY: 正无穷大。

    console.log(Number.POSITIVE_INFINITY); // Infinity
    
  5. Number.NEGATIVE_INFINITY: 负无穷大。

    console.log(Number.NEGATIVE_INFINITY); // -Infinity
    
  6. Number.EPSILON: 表示 1 和比 1 大的最小浮点数之间的差值。

    console.log(Number.EPSILON); // 2.220446049250313e-16
    
  7. Number.MAX_SAFE_INTEGER: 可精确表示的最大整数。

    console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
    
  8. Number.MIN_SAFE_INTEGER: 可精确表示的最小整数。

    console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
    

常用的内置方法:

  1. Number.isFinite(number): 检查数字是否为有限的数字。

    console.log(Number.isFinite(1000)); // true
    console.log(Number.isFinite(Infinity)); // false
    
  2. Number.isInteger(number): 检查是否是整数。

    console.log(Number.isInteger(1000)); // true
    console.log(Number.isInteger(1000.5)); // false
    
  3. Number.isNaN(number): 检查是否是 NaN。

    console.log(Number.isNaN(NaN)); // true
    console.log(Number.isNaN(1000)); // false
    
  4. Number.isSafeInteger(number): 检查是否是安全整数。

    console.log(Number.isSafeInteger(Math.pow(2, 53) - 1)); // true
    console.log(Number.isSafeInteger(Math.pow(2, 53))); // false
    
  5. Number.parseFloat(string): 将字符串解析为浮点数。

    let str = "123.45";
    console.log(Number.parseFloat(str)); // 123.45
    
  6. Number.parseInt(string, radix): 将字符串解析为指定基数的整数。

    let str = "1000";
    console.log(Number.parseInt(str, 10)); // 1000
    
  7. toFixed(digits): 将数字格式化为字符串,保留指定小数位。

    let num: number = 123.456;
    console.log(num.toFixed(2)); // "123.46"
    
  8. toExponential(fractionDigits): 转换为指数表示法。

    let num: number = 123456;
    console.log(num.toExponential(2)); // "1.23e+5"
    
  9. toPrecision(precision): 指定有效位数。

    let num: number = 123.456;
    console.log(num.toPrecision(2)); // "1.2e+2"
    
  10. toString(radix): 将数字转换为指定基数的字符串。

    let num: number = 123;
    console.log(num.toString(10)); // "123"
    console.log(num.toString(16)); // "7b" (16进制表示)
    

2. TypeScript String

字符串的创建:

let str1: string = 'Hello, world'; // 使用单引号
let str2: string = "Hello, world"; // 使用双引号
let str3: string = `Hello, 
world`; // 使用反引号创建多行模板字符串let name: string = 'world';
let str4: string = `Hello, ${name}`; // 模板字符串中嵌入表达式

常用的内置属性和方法:

  1. length: 返回字符串长度。

    let str: string = "Hello, TypeScript!";
    console.log(str.length); // 18
    
  2. charAt(index): 返回指定位置的字符。

    let str: string = "Hello, TypeScript!";
    console.log(str.charAt(0)); // 'H'
    
  3. charCodeAt(index): 返回字符的 Unicode 编码。

    let str: string = "Hello, TypeScript!";
    console.log(str.charCodeAt(0)); // 72 ('H' 的 Unicode 编码)
    
  4. concat(...strings): 连接两个或多个字符串。

    let str1: string = "Hello, ";
    let str2: string = "TypeScript!";
    console.log(str1.concat(str2)); // "Hello, TypeScript!"
    
  5. indexOf(searchValue): 返回字符串中第一次出现的指定值的索引。

    let str: string = "Hello, TypeScript!";
    console.log(str.indexOf("Type")); // 7
    
  6. slice(start, end): 提取子字符串。

    let str: string = "Hello, TypeScript!";
    console.log(str.slice(0, 5)); // "Hello"
    
  7. substring(start, end): 提取子字符串(类似slice)。

    let str: string = "Hello, TypeScript!";
    console.log(str.substring(0, 5)); // "Hello"
    
  8. toUpperCase(): 转换为大写。

    let str: string = "Hello, TypeScript!";
    console.log(str.toUpperCase()); // "HELLO, TYPESCRIPT!"
    
  9. toLowerCase(): 转换为小写。

    let str: string = "Hello, TypeScript!";
    console.log(str.toLowerCase()); // "hello, typescript!"
    

3. TypeScript Array

数组的声明与使用:

let arr1: number[] = [1, 2, 3, 4, 5];
let arr2: Array<string> = ["a", "b", "c"];

常用的内置属性和方法:

  1. length: 返回数组长度。

    let arr: number[] = [1, 2, 3, 4, 5];
    console.log(arr.length); // 5
    
  2. push(item): 添加元素到数组末尾。

    let arr: number[] = [1, 2, 3];
    arr.push(4, 5);
    console.log(arr); // [1, 2, 3, 4, 5]
    
  3. pop(): 移除并返回数组最后一个元素。

    let arr: number[] = [1, 2, 3, 4, 5];
    let lastElement = arr.pop();
    console.log(lastElement); // 5
    console.log(arr); // [1, 2,

3, 4]
```

  1. shift(): 移除并返回数组第一个元素。

    let arr: number[] = [1, 2, 3, 4, 5];
    let firstElement = arr.shift();
    console.log(firstElement); // 1
    console.log(arr); // [2, 3, 4, 5]
    
  2. unshift(item): 向数组开头添加一个或多个元素。

    let arr: number[] = [2, 3, 4, 5];
    arr.unshift(1);
    console.log(arr); // [1, 2, 3, 4, 5]
    
  3. splice(start, deleteCount, ...items): 删除并添加新元素。

    let arr: number[] = [1, 2, 3, 4, 5];
    arr.splice(2, 1, 6, 7); // 删除索引2的1个元素,并插入6, 7
    console.log(arr); // [1, 2, 6, 7, 4, 5]
    
  4. slice(start, end): 返回一个新数组,包含从 startend(不包括 end)的元素。

    let arr: number[] = [1, 2, 3, 4, 5];
    let slicedArr = arr.slice(1, 3);
    console.log(slicedArr); // [2, 3]
    
  5. forEach(callback): 对数组的每个元素执行给定函数。

    let arr: number[] = [1, 2, 3, 4, 5];
    arr.forEach((value, index) => {console.log(`Index: ${index}, Value: ${value}`);
    });
    

4. TypeScript Map

Map 用于存储键值对,其中键和值可以是任意类型。

let myMap = new Map<string, number>();
myMap.set("one", 1); // 添加键值对
myMap.set("two", 2);
console.log(myMap.get("one")); // 1

常用的内置属性和方法:

  1. set(key, value): 添加键值对。

    myMap.set("three", 3);
    console.log(myMap); // Map { 'one' => 1, 'two' => 2, 'three' => 3 }
    
  2. get(key): 获取键对应的值。

    console.log(myMap.get("two")); // 2
    
  3. has(key): 检查是否存在指定键。

    console.log(myMap.has("one")); // true
    
  4. delete(key): 删除指定键及其对应的值。

    myMap.delete("two");
    console.log(myMap); // Map { 'one' => 1, 'three' => 3 }
    
  5. clear(): 清空所有键值对。

    myMap.clear();
    console.log(myMap); // Map {}
    

5. TypeScript Tuple(元组)

元组用于存储不同类型的固定数量的元素。

let tuple: [string, number, boolean] = ["Hello", 42, true];
console.log(tuple); // ["Hello", 42, true]

常用的内置方法:

  1. push(...items): 添加一个或多个元素到元组末尾。

    tuple.push("World");
    console.log(tuple); // ["Hello", 42, true, "World"]
    
  2. pop(): 移除并返回元组的最后一个元素。

    let lastElement = tuple.pop();
    console.log(lastElement); // "World"
    console.log(tuple); // ["Hello", 42, true]
    
  3. concat(...tuples): 连接多个元组。

    let anotherTuple: [string, number] = ["TypeScript", 101];
    let combinedTuple = tuple.concat(anotherTuple);
    console.log(combinedTuple); // ["Hello", 42, true, "TypeScript", 101]
    

6.联合类型

联合类型(Union Types)允许一个变量拥有多个类型。

let value: string | number;value = "Hello";
console.log(value);  // 输出: Hellovalue = 42;
console.log(value);  // 输出: 42

还可以使用联合类型与函数:

function printValue(val: string | number): void {if (typeof val === "string") {console.log(`String value: ${val}`);} else {console.log(`Number value: ${val}`);}
}printValue("Hello");  // 输出: String value: Hello
printValue(123);      // 输出: Number value: 123

联合类型也可以用于数组:

let mixedArray: (string | number)[] = ["Alice", 25, "Bob", 30];
console.log(mixedArray);

学习总结

本次学习了TypeScript中的数据类型:数字、字符串、数组、Map对象、元组、联合类型。
其中需要特别注意:
1、Number 类型是基于 IEEE 754 双精度浮点数标准实现的。这意味着它不能精确表示所有的实数,特别是对于非常大或非常小的数,或者需要高精度的计算(如金融计算)时,可能会出现精度问题。
2、联合类型(Union Types)是指一个变量可以具有多种不同的类型。由于联合类型可以是多个类型的集合,因此直接使用联合类型的属性和方法需要确保这些属性和方法在所有可能的类型中都是共有的。

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

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

相关文章

【成品论文】2024年华为杯研赛E题25页高质量成品论文(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 点击链接加入【2024华为杯研赛资料汇总】&#xff1a;https://qm.qq.com/q/Mxv2XNWxUc https://qm.qq.com/q/Mxv2XNWxUc 高速公路应急车道紧急启用模型…

深度学习02-pytorch-03-张量的数值计算

张量&#xff08;Tensor&#xff09;是多维数组的通用化概念&#xff0c;它可以表示标量&#xff08;0维&#xff09;、向量&#xff08;1维&#xff09;、矩阵&#xff08;2维&#xff09;以及更高维度的数据。在深度学习和数值计算中&#xff0c;张量是基础数据结构&#xff…

基于python的api扫描器系统的设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

MySQL练手题--周内每天销售情况(困难)

一、准备工作 Create table If Not Exists Orders (order_id int, customer_id int, order_date date, item_id varchar(30), quantity int); Create table If Not Exists Items (item_id varchar(30), item_name varchar(30), item_category varchar(30)); Truncate table Or…

【软件文档】软件项目试运行方案(word实际套用2024)

软件项目试运行方案&#xff08;Word原件参考&#xff09; 一、试运行目的 二、试运行的准备 三、试运行时间 四、试运行制度 五、试运行具体内容与要求 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c…

python画图1

import matplotlib.pyplot as pltplt.rcParams["font.sans-serif"] ["SimHei"]# 模拟数据 years [2016, 2017, 2018, 2019, 2020, 2021, 2022] market_size [7950, 8931, 9940, 11205, 12305, 13199, 14980] my_color #3e9df5plt.plot(years, market_s…

《他们的奇妙时光》圆满收官,葛秋谷新型霸总获好评

9月21日&#xff0c;由王枫、张开法执导&#xff0c;周洁琼、葛秋谷领衔主演的奇幻爱情题材都市喜剧《他们的奇妙时光》圆满收官。该剧讲述了意外被游戏角色刑天附体的设计师宋灵灵&#xff0c;为修复游戏漏洞&#xff0c;被迫与能压制刑天的甲方总裁萧然同居&#xff0c;两人在…

局域网设备自动发现常用方法

文章目录 需求实现方法ARP (Address Resolution Protocol)Ping ip的流程抓包如下代码实现 mDNS 对比测试Avahi 介绍Avahi 安装Avahi 使用测试代码 需求 局域网设备自动发现是软件开发中的一个常见且重要的需求&#xff0c;它简化了设备间的协作机制&#xff0c;降低了软件各模…

MySQL内存(Buffer Pool)

Buffer Pool MySQL 的数据存在磁盘&#xff0c;但是不能每次读取数据都从磁盘里去&#xff0c;这样磁盘IO太频繁&#xff0c;存在性能问题。 InnoDB设计了一个缓存池&#xff08;Buffer Pool&#xff09;&#xff0c;缓冲池在内存中。 默认配置Buffer Pool大小为128MB&#xf…

Trapezoidal Decomposition梯形分解算法(TCD)

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言Trapezoidal Decomposition梯形分解算法&#xff08;TCD&#xff09;原理&#xff08;1&#xff09;第一种原理&#xff08;2…

DataX实战:从MongoDB到MySQL的数据迁移--修改源码并测试打包

在现代数据驱动的业务环境中&#xff0c;数据迁移和集成是常见的需求。DataX&#xff0c;作为阿里云开源的数据集成工具&#xff0c;提供了强大的数据同步能力&#xff0c;支持多种数据源和目标端。本文将介绍如何使用DataX将数据从MongoDB迁移到MySQL。 环境准备 安装MongoDB…

智慧医院人工智能应用场景 | 智能导诊系统源码

近年来&#xff0c;智能医疗在国内外的发展热度不断提升。图像识别、深度学习、神经网络、大模型、语音等关键技术的突破带来了人工智能技术新一轮的发展。 场景一&#xff1a;智能机器人 医疗机器人是指能够在医疗领域执行特定任务或功能的机器人&#xff0c;包括手术机器人、…

【LLaMa2入门】从零开始训练LLaMa2

目录 1 背景2 搭建环境2.1 硬件配置2.2 搭建虚拟环境2.2.1 创建虚拟环境2.2.2 安装所需的库 3 准备工作3.1 下载GitHub代码3.2 下载模型3.3 数据处理3.3.1 下载数据3.3.2 数据集tokenize预处理 4 训练4.1 修改配置4.2 开始训练4.3 多机多卡训练 5 模型推理5.1 编译5.1.1 安装gc…

Java算法专栏

专栏导读 在当今这个技术日新月异的时代&#xff0c;Java算法作为软件开发的核心&#xff0c;对于提升程序性能和解决复杂问题至关重要。本“Java算法”专栏旨在帮助读者深入理解Java编程语言中的算法原理和应用&#xff0c;通过实战案例和深入分析&#xff0c;使读者能够掌握…

软媒市场新探索:软文媒体自助发布,开启自助发稿新篇章

在繁华喧嚣的软媒市场中,每一个声音都在竭力呼喊,每一个品牌都在奋力展现。而软文,作为一种温柔而坚韧的营销力量,正逐渐崭露头角。特别是软文媒体自助发布平台的出现,更是为企业提供了一个全新的、高效的自助发稿渠道。 软媒市场自助发布平台,正如其名,是一个让企业能够自主发…

【LeetCode】每日一题 2024_9_21 边积分最高的节点(哈希)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;边积分最高的节点 代码与解题思路 func edgeScore(edges []int) (ans int) {// 直接维护哈希最大值即可mp : map[int]int{}for i, v : range edges {mp[v] i// 如果多个节点的 边积分 相…

【数据库】常用数据库简介

目录 &#x1f354; 常用的关系型数据库 &#x1f354; Mysql简介 &#x1f354; SQL 简介 SQL语句的分类 SQL 写法 SQL 常用的数据类型 &#x1f354; DDL语句 对数据库的操作 对数据表的操作 &#x1f354; DML语句 插入数据 insert into 修改数据 update 删除数…

Ubuntu下使用 python搭建服务实现从web端远程配置设备网口

1、通过文件配置Ubuntu设备网口 在Ubuntu工控机上&#xff0c;通过文件配置网口&#xff08;网络接口&#xff09;可以让网络配置在每次系统启动时自动生效。以下是常见的方法步骤&#xff1a; 1.1 使用 netplan 配置网口&#xff08;Ubuntu 18.04 及以上版本&#xff09; 编…

探索微软Copilot Agents:如何通过Wave 2 AI彻底改变工作方式

微软在最近的Copilot Wave 2发布会上&#xff0c;展示了一系列将彻底改变日常工作流程的新AI功能&#xff0c;尤其是 Copilot Agents&#xff0c;它们不仅仅是简单的工具&#xff0c;而是真正的工作助理&#xff0c;可以自动完成任务、提供智能分析并帮助你做出决策。这些新功能…

Day6:反转链表

题目&#xff1a;给你单链表的头节点head&#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a;head[1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] public ListNode reverseList() {if (head null) {return head;}ListNode cur head.next;head.next null…