javascript - 如何在 typescript 中解构枚举值?

标签 javascript typescript object enums destructure

我在 typescript 中有一个枚举,如下所示:

export enum XMPPElementName {
  state = "state",
  presence = "presence",
  iq = "iq",
  unreadCount = "uc",
  otherUserUnreadCount = "ouc",
  sequenceID = "si",
  lastSequenceID = "lsi",
  timeStamp = "t",
  body = "body",
  message = "message"
}
并且想要解构它的值(value),我们如何在 Typescript 中做到这一点?
const { uc, ouc, msg, lsi, si, t, body } =  XMPPElementName; 
更新
作为@amadan mentioned , 我们可以使用 Assigning to new variable names如 Mozilla 文档中所说的 Destructuring_assignment ,如下所示:
分配给新的变量名
属性可以从对象中解压缩并分配给名称与对象属性不同的变量。
const o = {p: 42, q: true};
const {p: foo, q: bar} = o;
 
console.log(foo); // 42 
console.log(bar); // true
并且该方法很好地解决了这个问题,但是如果您需要访问所有项目而不需要显式定义它们,您可以在这两个提到的 tag1 中的任何一个tag2

最佳答案

const { uc, ouc, msg, lsi, si, t, body } =  XMPPElementName; 

这不起作用,因为 XMPPElementName没有名为 uc 的元素(也同样适用于其他人)。如果您明确命名您的 key ,它将起作用:
  const {
    unreadCount: uc,
    otherUserUnreadCount: ouc,
    message: msg,
    lastSequenceID: lsi,
    sequenceID: si,
    timeStamp: t,
    body: body,
  } = XMPPElementName;
它会起作用的。或者,您可以只使用名称等于键而不是值的变量:
  const {
    unreadCount,
    otherUserUnreadCount,
    message,
    lastSequenceID,
    sequenceID,
    timeStamp,
    body,
  } = XMPPElementName;

关于javascript - 如何在 typescript 中解构枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64548438/

相关文章:

javascript - 当存储容量不足时,IOS 会删除 WebSQL 数据库吗?

javascript - 使用 jQuery 提交表单

javascript - 有没有办法更改/自定义 AddThis 脚本/小部件上的图像?

javascript - 是否可以调用像数组索引这样的 TypeScript 方法?

javascript - 将文件对象转换为 <img> Angular

javascript - 自动更新 slider jquery内的div内容

angularjs - 如何使用不污染全局范围的 TypeScript 类定义 AngularJS 服务?

javascript - 重新排序对象

java - 如何按字段对自定义对象的集合进行排序,该字段本身就是一个对象java

javascript - JavaScript 中原型(prototype)链的结尾是什么——null 或 Object.prototype?