TypeScript 字面量类型与类型别名

news2024/11/29 13:18:37

在 TypeScript 的世界中,类型系统提供了丰富的工具来帮助开发者定义和管理数据类型。今天,我们将探讨两个核心概念:字面量类型(Literal Types)和类型别名(Type Aliases)。这两种类型特性在 TypeScript 中扮演着重要的角色,它们允许我们以更精确和灵活的方式定义和使用数据类型。

字面量类型(Literal Types)

字面量类型是指 TypeScript 中一种特殊的类型,它用于表示一个固定的值。这种类型非常有用,当你想要限制一个变量只能是特定的几个值之一时,字面量类型就显得尤为重要。

基本语法

type Align = "centerX" | "centerY";

在这个例子中,Align 是一个字面量类型,它只能取 "centerX""centerY" 这两个字符串字面量中的一个。

实际应用

字面量类型在定义枚举类型或者限制函数参数时非常有用。例如,我们有一个函数 descAlig,它接受一个参数 align,这个参数只能是 "centerX""centerY"

function descAlig(align: "centerX" | "centerY") {
  if (align === "centerX") {
    console.log("centerX");
  } else {
    console.log("centerY");
  }
}

descAlig("centerX"); // 输出 "centerX"

在这个函数中,我们使用了字面量类型来限制 align 参数的值,这样就能确保传入的值是预期的两个字符串之一。

类型别名(Type Aliases)

类型别名是 TypeScript 中另一种强大的工具,它允许我们为一个类型起一个新名字。类型别名可以用来表示原始类型、联合类型、元组类型以及其它任何 TypeScript 支持的类型。

基本语法

type BaseAny = number | string | boolean | null | undefined;

在这个例子中,我们定义了一个类型别名 BaseAny,它是一个联合类型,表示一个值可以是 numberstringbooleannullundefined

实际应用

类型别名在定义复杂类型或者简化类型声明时非常有用。例如,我们可以定义一个类型别名来表示一个基础类型的集合,然后在变量声明时使用它。

var base: BaseAny = 1;
var base2: BaseAny = "demo";
var base3: BaseAny = true;

在这个例子中,我们声明了三个变量 basebase2base3,它们都使用了 BaseAny 类型别名。这使得代码更加清晰,并且易于维护。

类型别名与接口

类型别名和接口(Interfaces)在功能上是相似的,但它们有一些关键的区别。类型别名不能被扩展,而接口可以。此外,类型别名可以表示原始类型,而接口不能。

结论

字面量类型和类型别名是 TypeScript 中两个非常有用的类型特性。字面量类型允许你定义一个变量只能是特定的几个值之一,而类型别名则提供了一种方式来为复杂的类型声明一个更简洁的名字。掌握这两种类型将帮助你更精确地控制你的数据类型,从而编写出更可靠和易于维护的代码。

希望这篇文章能帮助你更好地理解和使用 TypeScript 的字面量类型和类型别名。如果你有任何问题或想要进一步探讨,欢迎在评论区留下你的想法!

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

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

相关文章

1 ISP一键下载

BOOT0BOOT1启动模式说明0X用户Flash用户闪存存储器,也就是Flash启动10系统存储器系统存储器启动,串口下载11SRAM启动SRAM启动,用于在SRAM中调试代码 闪存存储器 是STM32 的内置FLASH,一般使用JTAG或者SWD模式下载程序时,就是下载…

泷羽sec学习打卡-shell命令4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell4 如何在shell脚本与用户进行交互?如何限制用户输入的字符个数呢…

电子应用设计方案-27:智能淋浴系统方案设计

智能淋浴系统方案设计 一、系统概述 本智能淋浴系统旨在为用户提供舒适、便捷、个性化的淋浴体验,通过集成多种智能技术,实现水温、水流、淋浴模式的精准控制以及与其他智能家居设备的联动。 二、系统组成 1. 喷头及淋浴杆 - 采用可调节角度和高度的设计…

Spring系列之批处理Spring Batch介绍

概述 官网,GitHub A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. 执行流程 实战 假设有个待处理的任务,如文件batch-tes…

内存共享模型和Actor 模型

内存共享模型: 典型代表:java Actor 模型: 典型代表:HamnoyOS API 13

机器学习期末复习笔记

markdown文件下载:https://github.com/1037827920/SCUT-Notes/tree/main/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0 机器学习期末复习笔记 1. 机器学习简介 1.1 什么是机器学习 如图所示: 几乎所有的机器学习都包括以下三个部分:数据、模型和…

Spring Boot拦截器(Interceptor)详解

拦截器Interceptor 拦截器我们主要分为三个方面进行讲解: 介绍下什么是拦截器,并通过快速入门程序上手拦截器拦截器的使用细节通过拦截器Interceptor完成登录校验功能 1. 快速入门 什么是拦截器? 是一种动态拦截方法调用的机制&#xff…

Python基础学习-12匿名函数lambda和map、filter

目录 1、匿名函数: lambda 2、Lambda的参数类型 3、map、 filter 4、本节总结 1、匿名函数: lambda 1)语法: lambda arg1, arg2, …, argN : expression using arg 2) lambda是一个表达式,而不是一个语…

【SpringBoot】Spring Data Redis的环境搭建(win10)

启动redis服务 进入redis安装目录,启动cmd Redis客户端连接redis服务 我用的redis客户端是github上一个大佬写的,叫 Another Redis Desktop Manager Java框架操作Redis 框架有很多,比如Jedis,Spring Data Redis,Let…

联想品牌的电脑 Bios 快捷键是什么?如何进入 Bios 设置?

在某些情况下,您可能需要通过U盘来安装操作系统或进行系统修复。对于联想电脑用户来说,了解如何设置U盘作为启动设备是非常有用的技能之一。本文简鹿办公将指导您如何使用联想电脑的 U 盘启动快捷键来实现这一目标。 联想笔记本 对于大多数联想笔记本电…

51单片机教程(九)- 数码管的动态显示

1、项目分析 通过演示数码管动态显示的操作过程。 2、技术准备 1、 数码管动态显示 4个1位数码管和单片机如何连接 a、静态显示的连接方式 优点:不需要动态刷新;缺点:占用IO口线多。 b、动态显示的连接方式 连接:所有位数码…

windows下安装node.js和pnpm

首先,一定要powershell右键选择管理员身份运行,否则第三个命令报错。 # 安装 fnm (快速 Node 管理器) winget install Schniz.fnm# 配置 fnm 环境 fnm env --use-on-cd | Out-String | Invoke-Expression# 下载并安装 Node.js fnm use --install-if-mis…

【JavaEE初阶】枫叶经霜艳,梅花透雪香-计算机是如何运行的?

本篇博客给大家带来的是与计算机相关的知识点, 包括:计算机的组成, 指令, 进程(重点). 文章专栏: JavaEE初阶 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 1. 计算机的组成 1.1 计算机的发展史 计算…

基于时间维度优化“开源 AI 智能名片 S2B2C 商城小程序”运营策略:提升触达与转化效能

摘要: 随着数字化商业生态的蓬勃发展,“开源 AI 智能名片 S2B2C 商城小程序”融合前沿技术与创新商业模式,为企业营销与业务拓展带来新机遇。本文聚焦于用户时间场景维度,深入剖析如何依据不同时段用户行为特征,精准适…

自己整理的的java面试题

IO 按照流的流向分类:输入流和输出流 按照操作单元分类:可以分为字节流和字符流 按照流的角色划分:节点流和处理流 所有输入流的基类:InputStream/Reader 字节流/字符流 所有输出流的基类:OutputStream/Reader 字…

安全基线检查

一、安全基线检测基础知识 安全基线的定义 安全基线检查的内容 安全基线检查的操作 二、MySQL的安全基线检查 版本加固 弱口令 不存在匿名账户 合理设置权限 合理设置文件权限 日志审核 运行账号 可信ip地址控制 连接数限制 更严格的基线要求 1、禁止远程连接数据库 2、修改…

不间断电源 (UPS) 对现代技术可靠性的影响

在这个技术型世界里,无论是在个人还是商业环境中,电力供应商提供的稳定供电都变得越来越重要。 不间断电源 (UPS) 系统是一种不可或缺的解决方案,可保证终端设备不受干扰地运行,在出现电源问题或故障时让用户继续工作。 这篇文章…

基于yolov8、yolov5的智能零售柜商品检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要:智能零售柜商品检测在智能零售设备运营、库存管理和消费行为分析中具有重要意义,不仅能帮助相关企业实时监控商品状态,还为智能化零售系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的智能零售柜商品检测模…

Java接收LocalDateTime、LocalDatee参数

文章目录 引言I java服务端的实现1.1 基于注解规范日期格式1.2 json序列化和反序列化全局配置自动处理日期格式化II 知识扩展: 枚举的转换和序列化III 签名注意事项引言 应用场景举例:根据时间段进行分页查询数据 前后端交互日期字符串统一是yyyy-MM-dd HH:mm:ss 或者yyyy-M…

Java之String类常用操作

Java之String类 一、String类的理解1、类的声明2、内部声明的属性3、字符串常量的存储位置4、字符串的不可变性的理解5、String实例化的两种方式6、字符串的拼接 二、String的构造器1、构造器2、String和char之间相互转换3、String和byte之间相互转换 三、String中常用方法 一、…