簡體   English   中英

TypeScript使用枚舉集的一部分來定義變量的類型

[英]TypeScript using part of enum set to define type of variable

我有看起來像這樣的枚舉

export enum Alignment {
  Top = 'top',
  Right = 'right',
  Bottom = 'bottom',
  Left = 'left',
}

通常,我會在定義接口時使用它,例如對組件道具進行反應

interface CompProps {
  align: Alignment;
}

但是現在想知道我是否只能使用該枚舉的一部分,例如

interface CompProps {
  align: `part of Alignment: left and top`;
}

是否有一個通用的模式?

我可能會想到:

A. align: Alignment.Left | Alignment.Top; align: Alignment.Left | Alignment.Top;

B.為此任務創建新的枚舉

enum CompAlignment {
  Top = Alignment.Top,
  Left = Alignment.Left,
}

根據打字稿文檔

當枚舉中的所有成員都具有文字枚舉值時,就會使用一些特殊的語義。

首先是枚舉成員也將成為類型! 例如,我們可以說某些成員只能具有枚舉成員的值。

這意味着選項A是有效的,因為您可以利用聯合枚舉來實現所需的功能。

enum ShapeKind {
    Circle,
    Square,
}

interface Circle {
    kind: ShapeKind.Circle;
    radius: number;
}

interface Square {
    kind: ShapeKind.Square;
    sideLength: number;
}

let c: Circle = {
    kind: ShapeKind.Square,
    //    ~~~~~~~~~~~~~~~~ Error!
    radius: 100,
}

暫無
暫無

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

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