簡體   English   中英

帶標記的聯合和使用文字類型的標記

[英]Tagged unions and tagging using literal types

在TypeScript 2.0中,引入了帶標簽的聯合。 要使用它們,我們必須在接口中引入一個判別屬性,例如:

interface Action {
    type: "ACTION"
}

但是我不能使用字符串文字類型作為判別式:

let actionName: "ACTION"

interface Action {
    type: actionName <- error: cannot find name "actionName"
}

我想知道這是功能還是錯誤。

您的字符串文字定義錯誤。 let定義變量,而不是類型。 它應該是:

type actionName = "ACTION"

interface Action {
    type: actionName;
}

解決方案是使用以下表示法:

const ACTION: "ACTION" = "ACTION"

interface Action {
    type: typeof ACTION
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM