[英]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.