首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从TypeScript中的字符串常量创建类似联合或枚举的行为?

从TypeScript中的字符串常量创建类似联合或枚举的行为可以通过以下几种方式实现:

  1. 使用字符串字面量类型(String Literal Types):在TypeScript中,可以通过使用字符串字面量类型来限制变量的取值范围,类似于枚举的行为。可以通过使用联合类型(Union Types)和字符串字面量类型结合的方式来实现类似联合的行为。例如:
代码语言:txt
复制
type Fruit = "Apple" | "Banana" | "Orange";
let favoriteFruit: Fruit;
favoriteFruit = "Apple"; // 合法
favoriteFruit = "Grape"; // 不合法,只能是"Apple"、"Banana"或"Orange"中的一个
  1. 使用枚举类型(Enum Types):TypeScript中的枚举类型可以用于表示一组命名的常量值。可以通过定义一个枚举类型来创建类似联合或枚举的行为。例如:
代码语言:txt
复制
enum Fruit {
  Apple = "Apple",
  Banana = "Banana",
  Orange = "Orange",
}

let favoriteFruit: Fruit;
favoriteFruit = Fruit.Apple; // 合法
favoriteFruit = Fruit.Grape; // 不合法,只能是Fruit中的一个值

// 获取枚举的名称和值
console.log(Fruit.Apple); // 输出:"Apple"
console.log(Fruit["Apple"]); // 输出:"Apple"
console.log(Fruit[0]); // 输出:"Apple"
  1. 使用映射对象(Mapping Objects):通过定义一个映射对象,将字符串常量映射到对应的值或行为。可以通过创建一个对象字面量来实现这个映射。例如:
代码语言:txt
复制
const Fruit = {
  Apple: "Apple",
  Banana: "Banana",
  Orange: "Orange",
} as const;

type Fruit = keyof typeof Fruit;

let favoriteFruit: Fruit;
favoriteFruit = "Apple"; // 合法
favoriteFruit = "Grape"; // 不合法,只能是"Apple"、"Banana"或"Orange"中的一个

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(Serverless Cloud Function):无需管理服务器,按需运行代码,实现弹性扩缩容,适用于处理请求、数据处理、定时任务等场景。
  • 腾讯云数据库云服务(TencentDB):提供多种数据库引擎,包括MySQL、Redis、MongoDB等,支持高可用、备份恢复、自动扩缩容等功能,适用于各种应用场景。
  • 腾讯云云服务器(CVM):提供弹性云服务器,支持多种配置和操作系统选择,可根据实际需求灵活选择,适用于各种应用部署和开发环境。
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和工具,包括图像识别、语音识别、自然语言处理等,可应用于智能推荐、语音助手、人脸识别等场景。

请注意,以上只是腾讯云的一部分产品,其他云计算品牌商也提供类似的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TypeScript 演化史 — 第七章】映射类型和更好字面量类型推断

TypeScript 2.1 引入了映射类型,这是对类型系统一个强大补充。本质上,映射类型允许w咱们通过映射属性类型现有类型创建新类型。根据咱们指定规则转换现有类型每个属性。...转换后属性组成新类型。 使用映射类型,可以捕获类型系统类似 Object.freeze() 等方法效果。冻结对象后,就不能再添加、更改删除其中属性。...在方括号,使用了 keyof 操作符。keyof T 将 T 类型所有属性名表示为字符串字面量类型联合。 方括号 in 关键字表示我们正在处理映射类型。...在 TypeScript 2.0 ,类型系统扩展了几个新字面量类型: boolean 字面量类型 数字字面量 枚举字面量 不带类型注解 const 变量 readonly 属性类型推断为字面量初始化类型...字符串字面量扩展类型是 string,数字字面量扩展类型是number,true false 字面量类型是 boolean,还有枚举字面量扩展类型是枚举

3.8K40

TypeScript入门指南:JavaScript开发者简明概述与实用示例

示例:let x = 10; // TypeScript推断类型为number联合类型和枚举:TypeScript允许你为可以具有多种类型变量定义联合类型。枚举帮助你创建具有命名常量常量。...回答: 类型推断是TypeScript自动根据变量值确定其类型能力。这表明你不总是必须显式地提到类型,因为TypeScript通常可以分配推断出类型。...TypeScript如何处理联合类型,它们有什么用处? 回答: 联合类型允许一个变量具有多个类型。例如,一个变量可以是字符串数字类型。这种灵活性在变量在不同情况下可以采用不同数据类型时很有用。...能否解释TypeScript枚举作用? 回答: 枚举,缩写为enumerations,允许你创建一组具有命名常量常量。这有助于通过使用有意义名称替换魔术数字,使你代码更具可读性。...TypeScript如何支持基于类面向对象编程? 回答: TypeScript支持类,它们是创建对象蓝图。

17500
  • TypeScript 演化史 -- 7】映射类型和更好字面量类型推断

    . ---- 为了保证可读性,本文采用意译而非直译。 TypeScript 2.1 引入了映射类型,这是对类型系统一个强大补充。本质上,映射类型允许w咱们通过映射属性类型现有类型创建新类型。...在方括号,使用了 keyof 操作符。keyof T 将 T 类型所有属性名表示为字符串字面量类型联合。 方括号 in 关键字表示我们正在处理映射类型。...在 TypeScript 2.0 ,类型系统扩展了几个新字面量类型: boolean 字面量类型 数字字面量 枚举字面量 不带类型注解 const 变量 readonly 属性类型推断为字面量初始化类型...字符串字面量扩展类型是 string,数字字面量扩展类型是number,true false 字面量类型是 boolean,还有枚举字面量扩展类型是枚举。...readonly 修饰符只限制 TypeScript 代码对属性访问,在运行时就无能为力。也就是说,它会被编译时删除掉,不会出现在生成 JS 代码

    2.8K10

    TS 进阶 - 类型基础

    TypeScript ,要引用已创建 unique symbol 类型,需要使用类型查询操作符 typeof,如 typeof sym1。...(Items.B); // 1 console.log(Items.C); // 2 如果只为某个成员指定了枚举值,其之前成员仍 0 开始,之后成员会指定值递增: enum Items {...TypeScript 可以同时使用字符串枚举值和数字枚举值: enum Mixed { Num = 1, Str = 'str', } 枚举和对象重要差异在于,对象是单向映射,只能从键映射到键值...,而枚举是双向映射,可以枚举成员映射到枚举值,也可以枚举值映射到枚举成员。...常量枚举枚举类似,只是声明多了一个 const: const enum Items { A, B, C, } console.log(Items.A); // 0 // console.log

    1.8K50

    一文让你彻底掌握 TS 枚举

    创建了一个“重学TypeScript微信群,想加群小伙伴,加我微信 “semlinker”,备注重学TS。...如果枚举某个成员值使用显式方式赋值,但后续成员未显示赋值, TypeScript 会基于当前成员值加 1 作为后续成员值,比如以下 Enum 枚举成员 C: enum Enum { A,...二、指定枚举成员值 TypeScript 区分了三种指定枚举成员值方式: 使用字面量进行初始化: 隐式指定; 通过数字字面量字符串字面量。 常量枚举成员通过可在编译时计算其结果表达式初始化。...或者我们可以显式指定它值,并且仅允许使用以下语法: 数字字面量字符串字面量 对先前定义常量枚举成员引用 括号 一元运算符 +,-,~ 二进制运算符 +,-,*,/,%,>,>>>,&,|...// 动态查找 assert.equal(NoYes['Yes'], 1); 数字枚举还支持成员值到成员名称反向映射: assert.equal(NoYes[1], 'Yes'); 5.2 运行时基于字符串枚举

    4.5K20

    TypeScript 官方手册翻译计划【二】:普通类型

    这样字符串值 number 表示类似 42 这样数值。...其实我们只需要考虑 JavaScript 声明变量不同方式即可。var 和 let 声明变量都可以修改,但 const 不行。这种特点反映在 TypeScript如何为字面量创建类型。...因为在创建 req 和调用 handleRequest 之间可能会执行其它代码,req.method 也许会被赋值为类似 "GUESS" 这样字符串,因此 TypeScript 会认为这样代码是存在错误...枚举 枚举TypeScript 添加到 JavaScript 一项特性。它允许描述一个值,该值可以是一组可能命名常量一个。...与大多数 TypeScript 特性不同,枚举不是在类型层面添加到 JavaScript ,而是添加到语言本身和它运行时中。

    2.2K20

    5000 多字,让你一文掌握 TS 枚举

    如果枚举某个成员值使用显式方式赋值,但后续成员未显示赋值, TypeScript 会基于当前成员值加 1 作为后续成员值,比如以下 Enum 枚举成员 C: enum Enum { A,...二、指定枚举成员值 TypeScript 区分了三种指定枚举成员值方式: 使用字面量进行初始化: 隐式指定; 通过数字字面量字符串字面量。 常量枚举成员通过可在编译时计算其结果表达式初始化。...2.2 const 枚举成员 如果可以在编译时计算枚举成员值,则该枚举成员是常量。因此,我们可以隐式指定其值(即,让 TypeScript 为我们指定它值)。...或者我们可以显式指定它值,并且仅允许使用以下语法: 数字字面量字符串字面量 对先前定义常量枚举成员引用 括号 一元运算符+,-,~ 二进制运算符+,-,*,/,%,>,>>>,&,|,^...// 动态查找 assert.equal(NoYes['Yes'], 1); 数字枚举还支持成员值到成员名称反向映射: assert.equal(NoYes[1], 'Yes'); 5.2 运行时基于字符串枚举

    3.9K10

    TypeScript基础(二)扩展类型-枚举及其位运算

    引言 -- TypeScript枚举(Enum)是一种数据类型,用于定义一组具有命名值常量枚举可以帮助我们在代码中使用更具有可读性和可维护性常量。...枚举 -- 使用枚举我们可以定义一些带名字常量。 使用枚举可以清晰地表达意图创建一组有区别的用例。 TypeScript支持数字和基于字符串枚举。...如何定义一个枚举: 在TypeScript,可以使用关键字enum来定义一个枚举。...默认情况下,这些常量值会被赋予0开始递增数字索引。因此,在这个示例,Up将被赋值为0,Down将被赋值为1,以此类推。...总结一下 TypeScript枚举是一种用于定义一组具有命名值常量数据类型。它可以提高代码可读性和可维护性,并支持数字和字符串两种形式。

    22560

    枚举_TypeScript笔记7

    具体,没被显式初始化枚举值,要么最先出现,要么出现在在其它数值常量枚举值之后 反向映射 TypeScript里可用通过枚举值取到对应枚举常量名,这种特性称之为反向映射(reverse mapping...", Right = "RIGHT", } 与数值枚举类似字符串枚举枚举值都是字符串,但有2点差异: 字符串枚举没有自增机制,要求每个成员都显式初始化 字符串枚举没有反向映射 对比数值枚举字符串枚举一大优势是在运行时仍能保留值含义...包括那些没有初始值常量枚举成员,或者被初始化成: 字符串字面量 数值字面量 带负号数值字面量 如果所有成员都是字面量枚举成员,就叫联合枚举(union enums),此时会解锁一些新特性: 枚举本身有了确切类型含义...(是所有枚举成员联合体) 枚举成员也有了类型含义 枚举类型 把枚举用作类型,可以约束取值集合,进而暴露类似的潜在问题: // 联合枚举 enum E { Foo, Bar, }// 枚举类型含义...,环境枚举没有初始值枚举成员都当做计算值,不论上一个枚举成员是不是数值常量 参考资料 Enums

    53020

    深入理解 TypeScript Keyof 运算符,让你代码更安全、更灵活!

    一、如何定义 KeyOf 运算符 在 TypeScript ,keyof 运算符用于获取用户定义值。它主要用于泛型,格式类似联合运算符及其属性。keyof 运算符会检索用户指定索引。...keyof T 返回字符串字面量类型联合。字面量指的是赋值给常量变量固定值。由于 K 是一个字符串字面量类型,我们使用 extends 关键字对 K 进行约束。...在 TypeScript ,当我们在具有显式键对象类型上使用 keyof 运算符时,它会创建一个联合类型。...我们使用了 TypeScript Record 实用类型来创建一个映射,该映射将 Status 枚举值映射到具有特定结构对象。...这个模式在实际开发中非常有用,特别是在需要根据某些状态(如枚举)来确定显示样式标签时。

    18310

    1.8W字|了不起 TypeScript 入门教程(第二版)

    使用枚举可以清晰地表达意图创建一组有区别的用例。 TypeScript 支持数字和基于字符串枚举。...在一个字符串枚举里,每个成员都必须用字符串字面量,另外一个字符串枚举成员进行初始化。...而数字枚举如果没有显式设置值时,则会使用默认规则进行初始化。 3.常量枚举 除了数字枚举字符串枚举之外,还有一种特殊枚举 —— 常量枚举。...换句话说,类型保护可以保证一个字符串是一个字符串,尽管它值也可以是一个数值。类型保护与特性检测并不是完全不同,其主要思想是尝试检测属性、方法原型,以确定如何处理值。...let { name, ...rest } = person; 十、TypeScript 接口 在面向对象语言中,接口是一个很重要概念,它是对行为抽象,而具体如何行动需要由类去实现。

    10.2K51

    TypeScript学习笔记(四)—— TypeScript提高

    字符串字面量类型用来约束取值只能是某几个字符串一个。...上例,我们使用 type 定了一个字符串字面量类型 EventNames,它只能取三种字符串一种。 注意,类型别名与字符串字面量类型都是使用 type 进行定义。...在定义变量时可以指定变量类型为某1个多个常量,变量值只能取常量值,如: //常量 类型 let age:88; //约束age值只能是88 age=88; //age=87.9; //...TypeScript 除了实现了所有 ES6 功能以外,还添加了一些新用法。 这一节主要介绍类用法,下一节再介绍如何定义类类型。...此时针对某一个实例,我们无需了解它是 Cat 还是 Dog,就可以直接调用 eat 方法,程序会自动判断出来应该如何执行 eat 存取器(getter & setter):用以改变属性读取和赋值行为

    2.5K10

    Web前端面试敲重点知识,14个TypeScript核心基础面试题和答案

    10、说说枚举TypeScript 如何工作 ? 11、什么是参数解构 ?...TypeScript 具有三种常用基本类型:字符串、数字和布尔值,这些对应于 JavaScript 类似命名类型。...函数是执行特定代码代码块 函数可以有选择地接受一个多个参数,处理它们,并有选择地返回一个值。 image.png 8、如何TypeScript 创建对象 ?...对象类型可以具有零个多个可选属性,在属性名称之后 image.png 10、说说枚举TypeScript 如何工作 ?...枚举允许我们创建命名常量,这是一种为数字常量值赋予更友好名称简单方法 枚举由关键字 enum 定义,后跟其名称和成员。 image.png 11、什么是参数解构 ?

    11.5K10

    【译】2019年开始使用Typescript

    TypeScript在js开发者这么受喜爱原因是:在你运行代码前,添加到javascript类型有助你发现错误(代码)。TypeScript编译器提供错误可以很好引导你如何修复代码错误。...当你想一组具有关联性描述名称不同值,枚举就很有用处了。 默认,为枚举分配0开始值,接下来值为(上一个枚举值)加1。...,然而,字符串也可以被分配到一个枚举。...最佳通用类型推断 多种可能类型推断类型时,TypeScript使用最佳通用类型算法来选择适用于所有其他候选类型类型。...传递给fillArray函数第二个参数是一个字符串,因此创建数组将其所有元素设置为具有字符串类型。 应该注意是,按照惯例,单个(大写)字母用于泛型类型(比如:TK)。

    2.2K20

    2019年开始使用Typescript

    TypeScript在js开发者这么受喜爱原因是:在你运行代码前,添加到javascript类型有助你发现错误(代码)。TypeScript编译器提供错误可以很好引导你如何修复代码错误。...当你想一组具有关联性描述名称不同值,枚举就很有用处了。 默认,为枚举分配0开始值,接下来值为(上一个枚举值)加1。...,然而,字符串也可以被分配到一个枚举。...最佳通用类型推断 多种可能类型推断类型时,TypeScript使用最佳通用类型算法来选择适用于所有其他候选类型类型。...传递给fillArray函数第二个参数是一个字符串,因此创建数组将其所有元素设置为具有字符串类型。 应该注意是,按照惯例,单个(大写)字母用于泛型类型(比如:TK)。

    88020

    TypeScript 演化史 — 第二章】基于控制流类型分析 和 只读属性

    使用 TypeScript 2.0,类型检查器会分析语句和表达式所有可能控制流,在任何指定位置对声明为联合类型局部变量参数产生最可能具体类型(缩小范围类型)。...尽管如此,类型检查器在任何给定位置都为 command 变量使用最具体类型 在分配了字符串 “pwd” 之后,command 变量就不可能是字符串数组(联合类型惟一其他选项)。...因此,没有 command 变量联合类型删除字符串类型,并产生以下编译时错误: Property 'join' does not exist on type 'string | string[]...严格 Null 检查 当与可空类型一起使用时,基于控制流类型分析尤其有用,可空类型使用包括 null undefined 在联合类型表示。...也就是说,它是类型系统另一个特性,通过让编译器 TypeScript 代码库检查意外属性分配,帮助你编写正确代码。

    2K10

    TypeScript 基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型

    TypeScript 强大类型系统使得开发者能够更轻松地编写可维护、可扩展代码。本文将详细介绍 TypeScript 基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型。...原始类型在 TypeScript ,有以下几种原始类型:数字类型数字类型用于表示整数浮点数。可以使用 number 关键字来声明数字变量。...例如:enum Color { Red, Green, Blue,}let color: Color = Color.Green;在枚举类型,每个枚举成员都有一个与它关联数字值,默认 0 开始...也可以手动指定枚举成员数值。联合类型联合类型用于表示一个变量可以是多种类型之一。可以使用 类型1 | 类型2 | ... 语法来声明联合类型。...总结本文详细介绍了 TypeScript 基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型等方面。

    56230

    掌握 TypeScript:20 个提高代码质量最佳实践

    例如,在以下代码片段TypeScript 会自动推断 name 变量类型为字符串: let name = "John"; 类型推断在处理复杂类型将变量初始化为函数返回值时特别有用。...最佳实践11:使用枚举 枚举(Enums)是 TypeScript 定义一组命名常量一种方式。它们可以用于创建更具可读性和可维护性代码,通过给一组相关值赋予有意义名称。...“只读”关键字用于使对象属性只读,意味着在创建后它们无法被修改。例如,在处理配置常量值时,这非常有用。...:创建新类型、现有类型添加删除属性,更改现有类型属性类型。...文章还介绍了一些如何使用 TypeScript 高级特性最佳实践,例如使用类型别名和枚举,以提高代码可读性和可维护性。此外,该文章还强调了如何使用可选链操作符来避免一些运行时错误。

    4.1K30

    分享 30 道 TypeScript 相关面的面试题

    23、您将如何TypeScript 创建和使用 mixin? 答案:Mixin 是一种可重用组件创建模式。...在 TypeScript ,mixin 可以通过创建接受类并使用新属性方法扩展它函数来实现。然后,可以组合这些函数来装饰扩充类。此模式允许在 TypeScript 实现类似多重继承行为。...但是,TypeScript 不支持传统方法重载(您可以定义多个具有相同名称但参数不同方法)。 相反,您可以使用可选参数联合类型来实现类似的功能。...答案:keyof 运算符生成给定类型已知公共属性名称并集,这对于限制可能字符串创建映射类型很有用。...typeof 运算符在类型上下文中使用时,获取变量、常量对象文字类型,这对于基于现有对象形状创建类型非常有用,而无需手动重复其结构。

    77830

    TypeScript超详细入门教程(上)

    项目实战:这一章是实战部分,通过使用 TypeScript+Vue 开发一个简单后台。我会带着你创建一个项目,并实现目录列出功能,帮助你将学到知识在实际开发中进行运用。...使用枚举,我们可以给一些难以理解常量赋予一组具有意义直观名字,使其更为直观,你可以理解枚举就是一个字典。枚举使用 enum 关键字定义,TypeScript 支持数字和字符串枚举。...字符串枚举 TypeScript2.4 版本新增了字符串枚举字符串枚举值要求每个字段值都必须是字符串字面量,或者是该枚举另一个字符串枚举成员,先来看个简单例子: enum Message...,因为字符串枚举不能使用常量或者计算值,所以也不能使用其他枚举成员。...所以 TypeScript 在 1.4 新增 const enum(完全嵌入枚举),在之前讲定义枚举语句之前加上const关键字,这样编译后代码不会创建这个对象,只是会枚举里拿到相应值进行替换

    4.2K41
    领券