Typescript 字符串文字联合类型

2024-07-01

我有一个类属性,其类型是多个字符串文字的联合:

public reaction? : 'haha' | 'wow' | 'angry' | 'sad' | 'like';

我想做的是将这些字符串定义在某种数组的其他位置,然后在属性定义中使用该数组。所以像这样:

allowedStrings = ['haha','wow','angry','sad','like'];
public reaction? : allowedStrings;

我知道上述是不可能的,但这是一般的想法。 Typescript 是否提供了任何可以完成这项工作的东西?


从 TypeScript 3.4 开始,您可以使用运行时值生成类型常量断言.

const allowedStrings = ['haha', 'wow', 'angry', 'sad', 'like'] as const;
type AllowedString = typeof allowedStrings[number]; // [number] is important here

// We can freely map over values
const mapped = allowedStrings.map((s) => s.toUpperCase());

// And use generated type to create type-safe functions
const process = (s: AllowedString) => {
  // Type of s is
  //    s: "haha" | "wow" | "angry" | "sad" | "like"
  return s;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript 字符串文字联合类型 的相关文章

随机推荐

  • 当 HTML 作为输入字符串和 CSS 作为文件传递时,使用 Html2pdf 将 Itext7 HTML 转换为 PDF

    我已经通过 Itext 5 XMLWorker 实现了 HTML 到 PDF 的转换 请找到下面的代码 using var ms new MemoryStream using var document new Document using
  • android - 自动检测未使用的绘图

    问题是 我在开发 Android 应用程序时使用了许多图标和图片 后来我替换了其中的许多图标和图片 但保留了旧的 以防我需要再次使用它们 我现在有大量我的 png 的drawable文件夹中 许多现在都未使用 手动整理它们需要很长时间 有没
  • WIX 生成的 MSI 的自定义卸载程序

    我有一个从 WIX 脚本生成的 MSI 我的问题与此类似question https stackoverflow com questions 563236 custom repair and uninstall funtions for m
  • 为什么我的侧载应用程序在几天后停止工作?

    所以我实际上对 iOS 开发有点陌生 然而 在学习如何操作后 我已经制作了一些应用程序 但我注意到的一件事是 如果我使用手机来测试我的应用程序 该应用程序将在插入时运行 也许一两天后 但在那之后 如果我尝试打开它 它就会停止工作并崩溃 就像
  • 使用lastModified日期搜索DAM资产和Cq页面|查询生成器

    我正在根据上次修改日期查询 cq 页面和资产 以下是必须放入查询生成器调试器中的文本 fulltext geometrix 1 group p or true 1 group 1 group p and true 1 group 1 gro
  • 使用递归求数字之和

    对Java来说相当陌生 但我正在编写一个教程 其中我必须使用递归找到用户输入整数的数字总和 到目前为止 这是我的代码 公开课其他 public static void main String arg Scanner s new Scanne
  • 无法使用带有 socket.io 的媒体源从媒体记录器跳转到流

    当首先加载视频观察客户端然后加载网络摄像头客户端时 以下代码可以正常工作 但是 如果顺序交换或以任何方式中断流 例如通过刷新任一客户端 则流将失败并且媒体源会将其就绪状态更改为关闭 我的假设是 在开始时接收的视频需要初始化标头才能启动 并且
  • R:使用字符串作为参数来改变 dplyr 中的动词

    我正在构建一个闪亮的应用程序 它需要允许用户定义新的绘图变量 具体来说 我想允许用户定义要在 mutate 动词中使用的表达式 服务器接收文本形式的表达式 我想知道如何让 mutate 在 dplyr 0 7 中执行它 我可以使用 muta
  • 循环不断在字符串中添加空格?

    我有以下代码 sHexPic string to hex sPic sHexPic insert sHexPic begin 2 sHexPic insert 2 我想知道如何将其放入计数循环中并在每第二个字符后添加一个空格 到目前为止 这
  • HTACCESS 404 错误无法正常工作

    问题 在此服务器上找不到请求的 URL welcome php 此外 尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误 事情是这样的 当我访问 www mysite com page 时它工作正常 如果
  • Symfony 管理生成器原则executeCreate

    感谢您对此的帮助 我对 Symfony 框架非常陌生 所以只是想了解一下它 我希望能够拦截从管理区域提交的表单并修改数据 这是我到目前为止所得到的 基本形式 apps backend modules proposition actions
  • Google Chrome/Safari 相同的浏览器名称和版本!

    我有一个 asp net 网站 我在其中检查支持的浏览器 那是我的用户 Request Browser Browser 浏览器名称 和 Request Browser MajorVersion 浏览器版本 这里的问题是浏览器 Safari
  • Drupal 用户配置文件页面中的自定义菜单选项卡

    我想在用户个人资料页面顶部的 查看 编辑 文件 菜单链接旁边添加一个菜单项 当用户单击它时 它的行为应该与其他页面类似 因为它不仅启动到新页面 而且他们单击的菜单项 我们称之为 时髦按钮 会变成灰色 并且用户仍停留在新页面中 用户个人资料区
  • 如何向 CSV 文件添加列?

    我有以下 CSV 文件 header 1 header 2 header 3 summin 1 summin 2 summin 3 summin 4 summin 5 summin 6 我如何使用 CSV 类附加一列数据 结果将如下所示 h
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线
  • JavaScript 作为 HTML 属性是不好的做法吗?

    例子 https stackoverflow com a 372 89566 710887 https stackoverflow com a 37289566 710887 我看到这种情况越来越频繁地发生 我总是被教导要将 javascr
  • Apache2:如何记录拒绝的连接和客户端超时

    我正在对使用 Apache2 运行的服务进行一些负载测试 我的负载测试工具的默认超时为 30 秒 当我以每秒 1 个请求的负载运行该工具一分钟时 它报告 40 个请求成功 并有 200 个 OK 响应 并且有 20 个请求被取消 因为等待标
  • Jmeter json 路径提取器 - 如何从提取的值中删除 [ ]

    From json questions tagged json token id token id 82903430 f9b3 4f4b 9efa ee1b991cb735 我正在提取token id using json question
  • A* 搜索算法

    我想澄清以下 A 搜索示例的一些内容 用红色省略号突出显示的部分是我不理解的区域 看起来 S B f 2 6 8已被采取 移动 复制自Expand S 上 并用于Expand A 看来还 S A X f 1 4 5 10已被采取 移动 复制
  • Typescript 字符串文字联合类型

    我有一个类属性 其类型是多个字符串文字的联合 public reaction haha wow angry sad like 我想做的是将这些字符串定义在某种数组的其他位置 然后在属性定义中使用该数组 所以像这样 allowedString