typescript类型基础

typescript类型基础

枚举类型

enum Season {Spring,Summer,Fall,Winter
}

数值型枚举

enum Direction {Up,Down,Left,Right
}
const direction:Direction = Direction.up

每个数值型枚举成员都表示一个具体的数字,如果在定义一个枚举的时候没有设置枚举成员的值,Typescript会自动计算每个枚举成员的值。第一个枚举成员的值为0,后续++

enum Direction {Up = 1, // 1Down, // 2Left = 10, // 10Right // 11
}

数值型枚举是number类型的子类型,允许将数值型枚举赋值给number类型。

const direction: number = Direction.up

Number类型也能够赋值给枚举类型,即使number类型的值不在枚举成员值的列表中也不会产生错误

enum Direction {Up,Down,Left,Right
}
const d1: Direction = 0
const d2: Direction = 10 // 不会产生错误

字符串枚举

字符串枚举成员必须使用字符串字面量或者另一个字符串枚举成隐患来初始化。

enum Direction {Up = 'UP',Down = 'DOWN',Left = 'LEFT',Right = 'RIGHT'U = Up,D = DownL = LeftR = Right
}

字符串枚举是string类型的子类型,因此允许将字符串枚举类型赋值给string类型。下例中常量direction为string类型

enum Direction {Up = 'UP',Down = 'DOWN',Left = 'LEFT',Right = 'RIGHT'
}
const direction: string = Direction.Up

不允许将string类型赋值给字符串枚举类型

enum Direction {Up = 'UP',Down = 'DOWN',Left = 'LEFT',Right = 'RIGHT'
}
const direction: Direction = 'UP' // 编译错误,不能将类型up赋值给direction

异构型枚举

异构型枚举: TypeScript允许在一个枚举中同时定义数值类型枚举成员和字符串枚举成员。

enum Color {Black = 0,White = 'White'
}

不允许使用计算的值作为枚举成员的初始值

enum Color {Black = 0 + 0 // 不允许使用计算的值作为枚举成员的初始值
}

在异构型枚举中,必须为在字符串枚举成员之后的数值型枚举成员指定一个初始值。

enum ColorA {Black,White = 'white'
}
enum ColorB {White = 'white'Black // 枚举成员必须有一个初始值
}

枚举成员映射

任何类型的枚举,都可以通过枚举成员名来访问枚举成员。

enum Bool {False = 0,True = 1
}
Bool.False ;
Bool.True
Bool[Bool.False] // 'False'
Bool[Bool.True] // 'True'

常量枚举成员和计算枚举成员

常量枚举成员

若枚举类型的第一个枚举成员没有定义初始值。枚举成员是常量枚举成员并且初始值为0
若枚举成员没有定义初始值并且和他相邻的成员是常量枚举成员并且初始值为紧邻的前一个枚举成员值加一,如果紧邻的前一个枚举成员的值不是数值型常量,就会产生错误

enum Foo {A,B
}
enum Bar {c = 'c',d // 编译错误
}
  1. 常量枚举表达式可以是数字字面量,字符串字面量和不包含替换值的模板字面量
  2. 常量枚举表达式可以是对前面定义的常量枚举成员的引用
  3. 常量枚举表达式可以是分组运算符包围起来的常量枚举表达式
  4. 常量枚举表达式中可以使用一元运算符,操作数必须为常量枚举表达式
  5. 常量枚举表达式可以使用二元运算符,两个操作数必须是常量枚举表达式
enum Foo {A = 0,B = `B`, // 无替换的模板字面量C = 'C'  // 字符串字面量D = A // 引用前面定义的常量枚举成员
}
enum Bar {A = -1 // 一元运算符B = 1 + 2// 二元运算符C = (4 / 2) * 3 // 分组运算符
}
字面量枚举成员[常量枚举成员的子集]
  1. 枚举成员没有定义初始值
  2. 枚举成员的初始值为数字字面量、字符串字面量和不包含替换值
    的模板字面量
  3. 枚举成员的初始值为对其他字面量枚举成员的引用。
    在这里插入图片描述

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

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

相关文章

Excel利用数据透视表将二维数据转换为一维数据(便于后面的可视化分析)

一维数据:属性值都不可合并,属性值一般在第一列或第一行。 二维数据:行属性或列属性是可以继续合并的,如下数据中行属性可以合并为【月份】 下面利用数据透视表将二维数据转换为一维数据: 1、在原来的数据上插入数据透…

MySQL字符编码中的各个字符集的区别

MySQL8.0及以后版本 默认的字符集是utf8mb4,默认的排序规则是utf8mb4_0900_ai_ci。此排序规则不区分大小写,所以在项目查询功能中要格外注意。另外此排序规则不兼容MySQL8.0之前的数据,当做关联查询时会报错。 MySQL8.0之前版本 默认的字符…

MySQL 社区经理:MySQL 8.4 InnoDB 参数默认值为什么要这么改?

MySQL 8.4 LTS 版本,我们一共修改了 20 个 InnoDB 变量的默认值。 作者:Frederic Descamps,EMEA 和亚太地区的 MySQL 社区经理。于 2016 年 5 月加入 MySQL 社区团队。担任开源和 MySQL 顾问已超过 15 年。最喜欢的主题是高可用和高性能。 本…

解决一个朋友的nbcio-boot的mysql数据库问题

1、原先安装mysql5.7数据库,导入我的项目里的带数据有报错信息 原因不明 2、只能建议用docker进行msyql5.7的安装 如下,可以修改成自己需要的信息 docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_R…

selenium简介、使用selenium爬取百度案例、selenium窗口设置、

1 selenium简介 2 使用selenium爬取百度案例 3 selenium窗口设置 1 selenium简介 【一】web自动化 随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。 现在你可以看到很多网站的数据可能都是通过接口的形式传输的&…

python绘图(pandas)

matplotlib绘图 import pandas as pd abs_path rF:\Python\learn\python附件\pythonCsv\data.csv df pd.read_csv(abs_path, encodinggbk) # apply根据多列生成新的一个列的操作,用apply df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 最后几行 …

c#word文档:1.创建空白Word文档及保存/2.添加页内容...

---创建空白Word文档 --- (1)创建一个名为OfficeOperator的类库项目。引用操作Word的.NET类库 (2)定义用于操作Word的类WordOperator1。添加引用Microsoft.Office.Interop.Word命名空间。 (3)为WordOper…

Unity | Shader基础知识(第十三集:编写内置着色器阶段总结和表面着色器的补充介绍)

目录 前言 一、表面着色器的补充介绍 二、案例viewDir详解 1.viewDir是什么 2.viewDir的作用 3.使用viewDir写shader 前言 注意观察的小伙伴会发现,这组教程前半部分我们在编写着色器的时候,用的是顶点着色器和片元着色器的组合。 SubShader{CGPRO…

个股期权是什么,个股期权使用方法?

今天期权懂带你了解个股期权是什么,个股期权使用方法?个股期权作为金融市场的重要工具之一,是指投资者在约定时间内有权而非义务以约定价格买卖特定数量的个股的金融衍生品。 个股期权是什么? 个股期权合约是一种由交易所统一设定的标准化合…

qemu启动zfs 映像(未解决)

根据FreeBSD的riscv wiki :riscv - FreeBSD Wiki进行 qemu的启动实践,发现例子中的文件无法下载, fetch https://download.freebsd.org/snapshots/VM-IMAGES/15.0-CURRENT/riscv64/Latest/FreeBSD-15.0-CURRENT-riscv-riscv64.raw.xz 该文件…

git-新增业务代码分支

需求 使用git作为项目管理工具管理项目,我需要有两个分支,一个分支是日常的主分支,会频繁的推送和修改代码并推送另外一个是新的业务代码分支,是一个长期开发的功能,同时这个业务分支需要频繁的拉取主分支的代码&#…

Python_GUI框架 Pyside6的常用部件介绍

PySide6是一个非常完善的商用级别的GUI框架,涉及的知识点相对比较多,今天我先在这里介绍一下我们在实际应用中最常见的几种部件及其功能: 1. QMainWindow QMainWindow 提供了一个主应用程序窗口的框架,通常包含一个菜单栏、工具…

还原IP地址(力扣93)

解题思路;和分割回文数大致一样,都是在叶子节点收集结果,不过这里要多定义一个用来判断是否合格的函数,并且收集规则是插入完三个节点后再判断收集,同时注意每次开始时要在两位之后因为插入了. 具体代码如下: class …

python列表去掉指定index的几个元素

背景:输入的参数为空时也进入参数了,这种无效数据,大模型也处理不了,只能不返回数据,处理方法,去掉content为空的messages 在Python中,如果你想从列表中移除指定索引位置的元素,可以…

go语言中time日期时间格式化Format使用详解 2006-01-02 15:04:05

go语言中有个很特别的时间格式format,在我们使用 Format格式化时间的时候, format的参数格式字符串必须是 2006-01-02 15:04:05 才能格式出正确的时间来, 这是个很特别的字符串, 通过分析拆分后可以得出的每个代表时间和日期的数…

Redis学习(七)|如何保证Redis中的数据都是热点数据

文章目录 题目分析回答扩展Spring Boot中时用LRU管理Redisapplication.propertiesapplication.yml Redis 缓存策略 题目 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据? 分析 这个问题涉及到在一个数据量差异很大的情…

pytest教程-37-钩子函数-pytest_collection_finish

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_collection_start钩子函数的使用方法,本小节我们讲解一下pytest_collection_finish钩子函数的使用方法。 pytest_collection_finish(session) 是一个 pytest 钩子函数&…

03_Redis

文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库(不支持SQL标准语法)。 …

Java特性之设计模式【享元模式】

一、享元模式 概述 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式 享元模式尝试重用现有的同类对…

ffmpeg7.0 flv支持hdr

ffmpeg7.0 flv支持hdr 自从ffmpeg6.0应用enhance rtmp支持h265/av1的flv格式后,7.0迎来了flv的hdr能力。本文介绍ffmpeg7.0如何支持hdr in flv。 如果对enhance rtmp如何支持h265不了解,推荐详解Enhanced-RTMP支持H.265 1. enhance rtmp关于hdr 文档…