如何在打字稿中解构枚举值?

Sey*_*don 5 javascript enums object typescript destructure

我在打字稿中有一个枚举,如下所示:

export enum XMPPElementName {
  state = "state",
  presence = "presence",
  iq = "iq",
  unreadCount = "uc",
  otherUserUnreadCount = "ouc",
  sequenceID = "si",
  lastSequenceID = "lsi",
  timeStamp = "t",
  body = "body",
  message = "message"
}
Run Code Online (Sandbox Code Playgroud)

并想要解构它的价值,我们如何在 Typescript 中做到这一点?

const { uc, ouc, msg, lsi, si, t, body } =  XMPPElementName; 
Run Code Online (Sandbox Code Playgroud)

更新

正如 @amadan提到的,我们可以Assigning to new variable names像 Mozilla 文档中所说的那样使用Destructuring_assignment,如下所示:

分配给新变量名称

属性可以从对象中解包并分配给与对象属性名称不同的变量。

const { uc, ouc, msg, lsi, si, t, body } =  XMPPElementName; 
Run Code Online (Sandbox Code Playgroud)

该方法很好地解决了这个问题,但是如果您需要访问所有项目而不需要显式定义它们,您可以选择这两个提到的tag1 tag2

Ama*_*dan 7

const { uc, ouc, msg, lsi, si, t, body } =  XMPPElementName; 
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为XMPPElementName没有命名的元素uc(对于其他元素也同样如此)。如果你明确命名你的密钥,它将起作用:

  const {
    unreadCount: uc,
    otherUserUnreadCount: ouc,
    message: msg,
    lastSequenceID: lsi,
    sequenceID: si,
    timeStamp: t,
    body: body,
  } = XMPPElementName;
Run Code Online (Sandbox Code Playgroud)

它会起作用的。或者,您可以只使用名称等于键而不是值的变量:

  const {
    unreadCount,
    otherUserUnreadCount,
    message,
    lastSequenceID,
    sequenceID,
    timeStamp,
    body,
  } = XMPPElementName;
Run Code Online (Sandbox Code Playgroud)