TypeScript - 数据类型 - 声明变量

TypeScript 是一种强类型的 JavaScript 超集,它引入了静态类型检查和类型注解。基础类型是 TypeScript 中最基本的类型,用于定义变量的类型。

一、数据类型

常用基本类型:boolean 、number 、string 常用,都是小写

1.布尔类型(boolean)常用

  • 用于表示 true 或 false 的值。
let isTrue: boolean = true;
let isFalse: boolean = false;

2.数字类型(number)常用

  • 用于表示整数和浮点数(与 JavaScript 相同),没有区分整型和浮点型。
let age: number = 25;
let height: number = 5.9;

3.字符串类型(string)常用

  • 用于表示文本数据,支持单引号、双引号和模板字符串(反引号)。
let name: string = "Alice";
let greeting: string = `Hello, ${name}!`;

4.数组类型(Array)

  • 数组类型可以通过 类型[] 或 Array<类型> 的形式声明。
let numbers: number[] = [1, 2, 3, 4];
let fruits: Array<string> = ["apple", "banana", "orange"]; // 另一种写法

5.元组类型(Tuple)

  • 元组是一种特殊的数组,可以包含不同类型的元素,并且每种元素的类型和数量都固定。
let person: [string, number] = ["Alice", 25];

6.枚举类型(Enum)

  • 枚举用于定义一组命名常量,可以更清晰地表示数值。
enum Color {Red,Green,Blue
}let c: Color = Color.Green;

①数字枚举 

②字符串枚举

③常量枚举 

官方描述:常量枚举是一种特殊的枚举类型,它使用 const 关键字定义,在编译时会被内联,避免生成一些额外的代码。

7.任意类型(any)

any 表示不做任何类型检查,可以赋任意类型的值,通常用于与 JavaScript 代码的交互;

注意点:any 类型的变量,可以赋值给任意类型的变量

let anything: any = "Hello";  // 显示 any
anything = 123; // 也可以是数字let b; // 隐式 any

 

8.无类型(void)

  • 用于表示没有返回值的函数类型;
  • 即:函数返回值为空,也不应依赖其返回值进行任何操作;
function logMessage(message: string): void {console.log(message);
}

  • 符合语法规范的写法:

9.null 和 undefined

  • null 和 undefined 的类型分别为 null 和 undefined,这两者常用于表示“没有值”。
let u: undefined = undefined;
let n: null = null;

10.对象类型(Object)

  • 表示非原始类型的值,比如对象。较少使用
let person: { name: string; age: number } = {name: "Alice",age: 25
};

 

大写Object : 除了 null 和 undefined ,其余都可以存储。 

声明对象类型方式:

①常用形式

②索引签名 

允许定义对象可以具有任意数量的属性,这些属性的键和类型是可变的,常用于:描述类型不确定的属性,(具有动态属性的对象)。

声明函数类型方式: 

声明数组类型方式:

11.未知类型(unknown) 

  • 可以理解为一个类型安全的 any ,适用于:不确定数据的具体类型;

  • unknown 会强制开发者在使用之前进行类型检查,从而提高更强的类型安全性; 

  • 读取 any 类型数据的任何属性都不会报错,而 unknow 正好与之相反。 

12.任何值都不是(never) 

never 的含义是:任何值都不是,简言之就是不能有值,undefined,null,‘ ’  , 0 都不行!

  • 几乎不用 never 去直接限制变量,因为没有意义;
  • never 一般是 TypeScript 主动推断出来的;

  • never 也可以用于限制函数的返回值;

13.type 关键字

type 可以为任意类型创建别名,让代码更简洁、可读性更强,同时能更方便地进行类型复用和扩展。

  • 类型别名使用 type 关键字,type 后跟类型名称,例如下面代码中 num 是类型别名。

  • 联合类型:是一种高级类型,它表示一个值可以是几种不同类型之一。

  • 交叉类型:允许将多个类型合并为一个类型,合并后的类型将拥有所有被合并类型的成员。交叉类型通常用于对象类型。

二、基本语法

1.变量声明

在 TypeScript 中,可以通过 letconst、或 var 关键词来声明变量,通常推荐使用 let 和 const

const PI: number = 3.14; // 常量
let radius: number = 5;   // 变量

2.类型注解

TypeScript 允许在声明变量时显式地指定类型,使用冒号 : 符号来添加类型注解:

let name: string; // 声明一个字符串类型的变量
name = "Alice";   // 赋值

如果不指定类型,TypeScript 将自动推断该变量的类型

let age = 25; // age 的类型将被推断为 number

3.函数参数和返回值的类型

在 TypeScript 中,为函数的参数返回值也可以指定类型:

function add(x: number, y: number): number {return x + y;
}

且,函数传递的参数个数也得一致!!!!

4.注意点

 

三、类型总览

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

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

相关文章

有序任务规划的局限性

有序任务规划的局限性&#xff08;Limitation of Ordered-Task Planning&#xff09; 1. 任务前向分解&#xff08;TFD&#xff09;的限制 TFD&#xff08;Task Forward Decomposition&#xff09;是一种 基于完全有序方法&#xff08;Totally Ordered Methods&#xff09;的任…

MATLAB学习之旅:数据插值与曲线拟合

在MATLAB的奇妙世界里,我们已经走过了一段又一段的学习旅程。从基础的语法和数据处理,到如今,我们即将踏入数据插值与曲线拟合这片充满魅力的领域。这个领域就像是魔法中的艺术创作,能够让我们根据现有的数据点,构建出更加丰富的曲线和曲面,从而更好地理解和描述数据背后…

ASP.NET Core 下载文件

本文使用 ASP .NET Core&#xff0c;适用于 .NET Core 3.1、.NET 5、.NET 6和.NET 8。 另请参阅&#xff1a; 如何在将文件发送到浏览器后自动删除该文件。 如何将文件从浏览器上传到服务器。 如何在 ASP.NET Core 应用程序中从 URL/URI 下载文件。 如果使用.NET Framework&am…

Part 3 第十二章 单元测试 Unit Testing

概述 第十二章围绕单元测试展开&#xff0c;阐述了单元测试的实践与重要性&#xff0c;通过对比其他测试类型&#xff0c;突出其特点&#xff0c;还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容&#xff0c;为编写高质量单元测试提供指导。 章节概要 1…

SpringCloud-Eureka初步使用

什么是REST是一组用于规范资源在网络中转移的表现形式软件架构设计风格.简单来说就是客户端和服务器之间的一种交互形式 什么是RESTful,满足了REST风格的接口或者程序,RESTful API是其中的接口,spring中提供了RestTemplate这个类,他强制执行了REST的规范,包括使用HTTP协议的状…

Linux 高级篇 日志管理、定制自己的Linux系统、备份与恢复

一、日志管理 &#xff08;1&#xff09;基本介绍 日志文件是重要的系统信息文件&#xff0c;记录了如用户登录、系统启动、系统安全、邮件及各种服务等相关重要系统事件在安全方面&#xff0c;日志也至关重要&#xff0c;它能记录系统日常发生的各类事情&#xff0c;可用于检…

SpringMVC 请求参数接收

目录 请求 传递单个参数 基本类型参数传递 未传递参数 ?传递参数类型不匹配 传递多个参数 传递对象 后端参数重命名 传递数组 传递集合 传递JSON数据 JSON是什么 JSON的优点 传递JSON对象 获取URL中的参数 文件上传 在浏览器与程序进行交互时&#xff0c;主要…

深度学习之图像回归(一)

前言 图像回归任务主要是理解一个最简单的深度学习相关项目的结构&#xff0c;整体的思路&#xff0c;数据集的处理&#xff0c;模型的训练过程和优化处理。 因为深度学习的项目思路是差不多的&#xff0c;主要的区别是对于数据集的处理阶段&#xff0c;之后模型训练有一些小…

23. AI-大语言模型-DeepSeek简介

文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本1. 类型2. 版本3. 参数规模与模型能力 3. 特征4. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文…

京东cfe滑块 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向分析 headers {"accept&qu…

什么是事务?并发事务引发的问题?什么是MVCC?

文章目录 什么是事务&#xff1f;并发事务引发的问题&#xff1f;什么是MVCC&#xff1f;1.事务的四大特性2.并发事务下产生的问题&#xff1a;脏读、不可重复读、幻读3.如何应对并发事务引发的问题&#xff1f;4.什么是MVCC&#xff1f;5.可见性规则&#xff1f;参考资料 什么…

火语言RPA--Excel插入空行

【组件功能】&#xff1a;在Excel内指定的位置插入空行 配置预览 配置说明 在第n行之前 支持T或# 填写添加插入第n行之前行号。 插入n行 支持T或# 插入多少行。 Sheet页名称 支持T或# Excel表格工作簿名称。 示例 Excel插入空行 描述 在第3行之后插入3行。 配置 输…

【算法基础】--前缀和

前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr&#xff0c;求前缀和 …

buuctf-[极客大挑战 2019]Knife题解

一个很简单的web题&#xff0c;进入界面 网页名还加白给的shell&#xff0c;并且给的提示也很明显&#xff0c;给了一个一句话木马再加上菜刀&#xff0c;很怀疑是一个webshell题&#xff0c;那么直接打开蚁剑测试连接拿shell 用提示的一句话木马的密码&#xff0c;测试链接发现…

基于YOLO11深度学习的半导体芯片缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

零食店收银pos源码

各位零食店老板&#xff0c;你是否还在为以下问题头疼&#xff1f; 连锁门店越来越多&#xff0c;管理起来力不从心&#xff1f;散装称重商品收银效率低&#xff0c;顾客排队抱怨&#xff1f;线上订单激增&#xff0c;库存混乱&#xff0c;配送跟不上&#xff1f;营销活动花样少…

DeepSeek 冲击(含本地化部署实践)

DeepSeek无疑是春节档最火爆的话题&#xff0c;上线不足一月&#xff0c;其全球累计下载量已达4000万&#xff0c;反超ChatGPT成为全球增长最快的AI应用&#xff0c;并且完全开源。那么究竟DeepSeek有什么魔力&#xff0c;能够让大家趋之若鹜&#xff0c;他又将怎样改变世界AI格…

卷积与动态特征选择:重塑YOLOv8的多尺度目标检测能力

文章目录 1. YOLOv8的网络结构概述2. 添加注意力机制2.1 为什么添加注意力机制&#xff1f;2.2 如何将注意力机制集成到YOLOv8中&#xff1f;2.3 效果分析 3. C2f模块的集成3.1 C2f模块简介3.2 如何在YOLOv8中集成C2f模块&#xff1f;3.3 效果分析 4. 卷积操作的优化4.1 卷积操…

鸿蒙-验证码输入框的几种实现方式-上

文章目录 效果图、优缺点多TextInput多 TextCanvas 绘制 多个 TextInput 拼接放置四个输入框焦点移动输入时向后移动输入完成回调删除时向前移动 防止点击总结 最近在做应用鸿蒙化&#xff0c;说白了就是把原来Android、iOS的代码重新用ArkTS写一遍&#xff0c;我负责基础建设和…

谈谈对线程的认识

面对这样的一个多核CPU时代, 实现并发编程是刚需. 多进程实现并发编程, 效果是特别理想的. 但是, 多线程编程模型有一个明显的缺点, 就是进程太重了, 效率不高. 创建一个进程, 消耗时间比较多. 销毁一个进程, 消耗时间也比较多. 调度一个进程, 消耗时间也比较多. 这里的时…