TS — 枚举的基础应用,const,declare关键字的使用

2023-05-16

  在 TypeScript 中,枚举(Enum)是一种可用于定义一组具有名称和值的常量的数据类型。它们允许我们定义一组命名常量,而这些常量的值可以是数字,字符串或任何其他数据类型。枚举允许我们使用这些常量在我们的应用程序中进行类型安全的比较和赋值。

  枚举可以看作是一个包含了一组具名值的对象,这些具名值在整个程序中是唯一的。枚举成员可以具有常量值、计算值或常量表达式。枚举成员可以是数字、字符串、甚至是布尔类型。当枚举成员的值为数字类型时,默认值是从 0 开始递增的。

enum Color {
  Red,
  Green,
  Blue
}

console.log(Color.Red)    // 0
console.log(Color.Green)  // 1
console.log(Color.Blue)   // 2

若指定第一个枚举成员的值,则后面的枚举成员的值会依次递增。

enum Color {
  Red = 5 ,
  Green,
  Blue 
}

console.log(Color.Red)    // 5
console.log(Color.Green)  // 6
console.log(Color.Blue)   // 7

当然,也可以直接手动指定枚举成员的值。枚举成员的值除了可以为常量,也能是计算出来的结果

enum Color {
  Red = 1,
  Green = 2,
  Blue = 4 + 1,
  Black = "BLACK"
}

let color: Color = Color.Green;

console.log(color); // 2
console.log(Color[2]); // Green
console.log(Color.Blue) //5

console.log(Color.Black) //BLACK
console.log(Color['BLACK']) //undefined !!!

  枚举成员可以使用枚举名来访问,也可以使用枚举的值来访问。在上面的示例中,我们将 Color.Green 赋值给变量 color,并将其输出。输出结果是 2,这是因为 Green 的值为 2。我们也可以使用 Color[2] 来访问 Green,这将返回字符串 "Green"。

!!!需注意的是,上方示例中通过"BALCK"访问Black时报错,打印出underfined,这是因为如果枚举成员的值是字符串,那么在 TypeScript 中是不能通过枚举成员的值来访问该成员的,只能通过枚举成员的名称来访问。

***枚举前的关键字

1.const

在TypeScript中,可以使用const关键字来创建const枚举,与常规枚举的区别在于,在编译时会将其内联,而不会在运行时创建对象。这意味着无法在运行时使用const枚举的属性名称来访问枚举的值。

const enum Directions {
  Up,
  Down,
  Left,
  Right,
}

 在上面的示例中,Directions被定义为const枚举。因此,在编译时,Directions将被内联为数字常量。在运行时,Directions将不存在。

!!!注意,使用const关键字创建的枚举不支持计算成员。如果枚举中包含计算成员,则需要使用常规枚举。

2.decalare

在 TypeScript 中,declare 关键字通常用于声明不需要编译的实体,例如全局变量、函数、对象等。因此,如果我们需要引入第三方库或其他模块中已经存在的全局变量,就可以使用 declare 来声明这些变量,避免 TypeScript 抛出编译错误。

在声明枚举时,declare 通常用于声明全局枚举,即在模块中定义枚举,并在另一个模块中使用。在这种情况下,枚举定义不需要编译到 JavaScript 文件中,而只是用于类型检查。具体示例如下:

// colors.d.ts
declare enum Colors {
  Red = '#FF0000',
  Green = '#00FF00',
  Blue = '#0000FF'
}

// app.ts
import { Colors } from './colors';
console.log(Colors.Red); // '#FF0000'

在上述示例中,colors.d.ts 中定义了一个枚举 Colors,它的成员值都是字符串类型。由于在声明时使用了 declare 关键字,因此在编译成 JavaScript 文件时不会将 Colors 枚举转换为实际代码,而是只作为类型声明使用。在 app.ts 中,我们通过 import 关键字将 Colors 枚举导入,并可以使用它的成员值进行操作。

需要注意的是,在使用 declare 声明全局枚举时,不需要使用 export 关键字导出枚举,因为枚举本身就是全局可见的。同时,在使用全局枚举时,也不需要使用命名空间等方式进行引用,只需要直接使用枚举名即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TS — 枚举的基础应用,const,declare关键字的使用 的相关文章

  • GPS卫星轨道

    GPS卫星轨道周期几乎是24小时 xff0c 而自己的卫星在太阳同步轨道上的周期大概是1 5个小时 xff0c 那么就是说太阳同步轨道已经绕几周了 xff0c GPS卫星才饶一周 所以当算多普勒频移的时候只需要算出GPS一个周期时间内的多普
  • 快速了解S7-1200 PLC的存储器及存储区的寻址方式

    S7 1200 PLC的存储器地址包括输入I 输出Q 位存储器M 数据块DB xff0c 以及本地或临时存储器L eg xff1a 标识存储区M0 0 MB0 MW0 MD0 分别是 B位 字节B 8位 字W 16位 双字D 32位 输入过
  • 网络编程之UDP简单示例

    UDP编程函数recvfrom inet pton sendto UDP协议 user data protrol 用户数据协议特点 xff1a TCP xff1a 面向连接 gt 一定双方连接上了才能进行通信 xff01 UDP xff1a
  • 微信开发(二)http请求工具类

    说明 进行微信开发 xff0c 后台程序需要与微信服务器进行交互 xff0c 通过调用接口来完成服务 xff0c 阅读微信开发文档 xff0c 发现接口的调用都是通过http请求进行的 xff0c 所以必须有个HttpUtil来支撑 xff
  • STM32寄存器与结构体

    piaolin 发表于 2015 9 30 01 02 只看该作者 倒序浏览 阅读模式 第16集 蜂鸣器实验 这个实验和流水灯是一样的 xff0c 只是将相对应的IO口拉高拉低即可控制蜂鸣器 值得注意的是电路设计方面 xff0c 根据视频描
  • 字节序

    1 字节序 字节序 xff0c 又称端序或尾序 xff0c 指的是多字节数据在内存中的存放顺序 例如一个int型变量x占用4个字节 xff0c 假设它的起始地址 amp x为0x10 xff0c 那么x将会被存储在 0x10 0x11 0x
  • extern “C“的作用及理解

    1 意图 extern 34 C 34 是C 43 43 特有的指令 xff08 C无法使用该指令 xff09 xff0c 目的在于支持C 43 43 与C混合编程 2 作用 extern C 的作用是告诉C 43 43 编译器用C规则编译
  • Linux命令 nautilus

    nautilus是GNOME桌面下的一个文件管理工具 通过这个命令我们可以在终端下非常方便的打开指定目录的文件 nautilus 命令后面一个 xff0c 表示当前目录 命令模式为 nautilus pwd支持绝对路径和相对路径两种方式 x
  • windows下C语言实现TCP通信

    编译器 xff1a vs2017 语言 xff1a c语言 具体的原理可以在其他博客看到 在我学习winsock编程时 xff0c 发现那些博客代码居然在我机器上没一个能运行 xff0c 可能是我水平有限 于是我根据winsock相关知识
  • 关于USB转串口型设备的latency问题

    USB转串口型设备在通讯时默认有16ms延时 xff0c 这在控制任务中往往是不能接受的 xff0c 为了改善这个情况需要改变latency的值为最小值1 在Windows环境下 xff0c 可以如下操作 xff1a 右键属性 端口设置 高
  • 航模lipo锂电池过放抢救/处理方式

    实验室用的tattu航模电池经常因为疏忽导致过放 xff0c 逐渐也摸索出来过放的抢救方法 当然最好的方法还是不要过放 xff1a xff09 1 首先是检查电池剩余电压 xff0c 用普通的电压表就可以了 xff0c 今天刚搞崩了了一块
  • 基于DCT+huffman变换的图像压缩解压缩FPGA实现

    目录 一 理论基础 二 verilog程序 三 仿真结果 一 理论基础 整个算法涉及到DCT变换和Huffman编码两个部分 其整体流程图如下所示 nbsp 这里 我们将做三个方面的工作
  • C++代码编译过程

    C 43 43 代码编译过程 源代码从生成到可执行文件可以分成四个步骤 xff1a 预处理 编译 汇编和链接 以下是linux下GCC生成一个可执行文件a out的过程 xff1a 一 预处理 预处理过程主要是处理那些源文件和头文件中以 开
  • Linux终端美化

    1 安装终端软件terminator 可自行选择 sudo apt get install terminator y 2 安装zsh sudo apt get install zsh y 3 安装oh my zsh sh c 34 curl
  • windows 7 浏览器无法进网站,提示安全证书存在问题(GlobalSign)

    下载更新包就行了kb4474419 http www catalog update microsoft com search aspx q 61 kb4474419
  • linux下共享库(.so文件)的调用

    需要的文件 libxxxx so xxxx h 记住 复制文件的时候千万不要用ROOT权限 xff0c 不然编译时会找不到这个共享库 最好时把库放到 usr lib chmod 777 chown username CMakeLists t
  • 3.RT-Thread线程的创建与删除,动态线程、静态进程

    在实际应用中 xff0c 经常添加多个 c 文件和 h 文件 xff0c RT Thread借助自动构建系统 Scon xff0c 它会自动添加你的 c和 h文件到你的工程中 xff0c Scon工具根据package kernel目录下的
  • Windows环境下使用VSCode和CMake学习Eigen库的使用

    YOUTUBE LINK https www youtube com watch v 61 wP4cwAtU g8 Eigen xff1a http eigen tuxfamily org index php title 61 Main P
  • Linux环境下使用 VScode + CMake +CMakeTools开发调试 C++ 程序

    插件 xff1a Bracket Pair Colorizer xff1a 括号颜色区分 C C 43 43 IntelliSense xff1a 代码提示 Chinese Simplified Language Pack for Visu
  • 四旋翼定高篇之惯导加速度+速度+位置三阶互补融合方案

    2017年03月13日 原文链接 四旋翼定高篇之惯导加速度 43 速度 43 位置三阶互补融合方案 笔者最近正在做四旋翼惯性导航的部分 xff0c 利用加速度计进行速度估计 位置估计 xff0c 从而实现四旋翼的垂直方向上的定高 水平方向上

随机推荐

  • x86_64 OpenWrt/LEDE 环境下使用mentohust配置锐捷上网共享网络

    OpenWrt 可以被描述为一个嵌入式的 Linux 发行版 xff08 主流路由器固件有 dd wrt tomato openwrt三类 xff09 对比一个单一的 静态的系统 xff0c OpenWrt的包管理提供了一个完全可写的文件系
  • 视觉SLAM14讲 第七讲 视觉里程计1

    C 43 43 代码 特征提取 xff1a 找出2张图片中相似的点 特征 xff1a 关键点 例如角点 xff0c 明暗变化大的点 43 描述子 记录的关键点的特征信息 xff0c 方向 xff0c 旋转 等 FAST特征点 xff1a 角
  • 基于FPGA的7x7矩阵求逆verilog开发

    up目录 一 理论基础 二 核心程序 三 测试结果 一 理论基础 nbsp nbsp nbsp nbsp 矩阵运算在科学计算 数字信号处理和图像处理等领域有着广泛的应用 上述应用领域的实时性要求很高 因此如何快速实现矩阵运算具有重要的意义
  • 程序员的几个建议

    注 xff1a 感觉这个文章说的挺有指导意义 每年都有无数年轻程序员 xff0c 加入软件行业 他们在学校里学过编程 xff0c 但是对这个行业的现实一无所知 Patrick McKenzie是美国一家小软件公司的老板 xff0c 他写了一
  • 工程师必备串口数据截取工具modbus命令分析串口数据分析

    工程师必备串口数据截取工具modbus命令分析串口数据分析 主要功能 xff1a 支持监控COM端口类型 xff1a 标准电脑端口 xff0c 内核虚拟COM端口 xff0c USB转串口等 xff1b 可以实时监控并采集串口数据 xff1
  • VINS-mono的编译与运行

    简介 xff1a VINS mono是香港科技大学一个计算机视觉实验室的科研结果 xff0c 是要是基于单目视觉惯性里程计的一个slam系统 xff0c 整个项目都是内嵌于ros 非常感谢这群勤劳刻苦创新的研究者开源了这个项目 在此我记录下
  • C ++ 函数在头文件中定义,结果编译时出现重定义

    场景 xff1a 这种情况和头文件宏定义无关 xff0c 一般发生在编译完成链接的时候 xff1b 注 xff1a 头文件宏定义如下图 xff0c ifndef HEAD H 如果没有定义这个宏 define HEAD H 定义这个宏 h头
  • 单片机开发用到的intrins.h文件

    intrins h文件内容如下 xff1a ifndef INTRINS H define INTRINS H extern void nop void extern bit testbit bit extern unsigned char
  • 自动驾驶路径规划——基于MATLAB的栅格地图

    目录 前言 1 什么是栅格地图 xff1f 1 1栅格地图用于路径规划的优势 xff1a 2 MATLAB栅格地图的绘制 MATLAB代码 声明 前言 这个学期学校开设了相应的课程 xff0c 同时也在学习古月居机器人学系列的 基于栅格地图
  • 自动驾驶路径规划——A*(Astar)算法

    目录 1 最佳优先搜索 xff08 Best First Search xff09 1 1 最佳优先搜索的过程 2 A Star算法2 1 Astar算法所属分类2 2 Astar算法基本概念2 3 启发函数单调性的推导2 4 设计代价函数
  • vscode 出现“identifier “cout“ is undefined“或“未定义标识符cout”

    vscode 出现 34 identifier cout is undefined 34 或 未定义标识符cout 最近想学C 43 43 xff0c 然后就从通读C 43 43 Primer Plus开始 xff0c 结果出师未捷身先死
  • 【网络通信】关于TCP阻塞和非阻塞方式的总结

    关于TCP阻塞和非阻塞方式的总结 1 引言 在网络编程时 xff0c 我们需要注意创建的socket是阻塞状态还是非阻塞状态的 xff0c 这两种状态在编程时 xff0c 对于每一个socket系统调用函数 xff08 connect se
  • c语言中return返回值的用法总结

    return返回值的意义就是把return lt 表达式内容 gt 返回给调用return的函数 例如 xff1a void test int i int j xff5b return i 43 j printf 34 不会被执行的语句 x
  • UART、RS232、RS485、I2C和SPI的介绍

    基本知识 串行通信 xff1a 多个数据通过一条数据线 xff0c 依次传输并行通信 xff1a 多个数据通过多条数据线 xff0c 一次性传输单工通信 xff1a 只能接收数据或者发送数据 xff08 遥控器 收音机 xff09 半双工通
  • 【MATLAB教程案例97】基于GA遗传优化的CNN卷积神经网络最优训练参数搜索matlab仿真

    欢迎订阅 FPGA学习入门100例教程 MATLAB学习入门100例教程 目录 1 软件版本 2 理论概述 3 matlab仿真
  • 【读书笔记】-《华为-C语言编程规范》

    前言 作为程序开发者 xff0c 避免不了阅读别人代码 xff0c 那么就会涉及到到一门语言的编程规范 规范虽然不是语言本身的硬性要求 xff0c 但是已经是每一个语言使用者约定俗成的一个规范 按照编程规范编写的代码 xff0c 至少在代码
  • UART概述(下)

    目录 IntroductionFunctional OverviewOverviewFunctional descriptionOperation Introduction UART作为一个连接到APB的AMBAslave模块 xff0c
  • sprintf,你知道多少?

    选自 CSDN 社区电子杂志 C C 43 43 杂志 http emag csdn net 2005 年1 月 总第1 期 93 本文作者 xff1a steedhorse xff08 晨星 xff09 printf 可能是许多程序员在开
  • 1315 - 遥控飞机争夺赛

    红太阳杯遥控飞机大赛拉开帷幕 比赛规则为 xff0c 每位选手让自己的飞机从起点到终点飞行 55 次 xff0c 组委会记录 55次的飞行的成绩之后去掉一个最大成绩 一个最小成绩后计算剩余 33 个成绩的平值 xff08 平均分保留 33
  • TS — 枚举的基础应用,const,declare关键字的使用

    在 TypeScript 中 xff0c 枚举 xff08 Enum xff09 是一种可用于定义一组具有名称和值的常量的数据类型 它们允许我们定义一组命名常量 xff0c 而这些常量的值可以是数字 xff0c 字符串或任何其他数据类型 枚