限制通用記錄中的陣列值不包含與其指派給的鍵相同的值?
P粉252116587
P粉252116587 2023-09-16 14:13:52
0
1
649

我正在實作一個簡單的狀態機。配置如下所示:

type StateMachineConfig = Record;

每個鍵都應該是一個字串枚舉。

每個值都應該是相同字串枚舉的數組,但是作為鍵給出的 State 不應包含在數組中

因此考慮到以下狀態:

enum MyStates { State1 = "State 1", State2 = "State 2", State3 = "State 3" }

...以下應該有效:

const config: StateMachineConfig = { [MyStates.State1]: [MyStates.State2], [MyStates.State2]: [MyStates.State3], [MyStates.State3]: [MyStates.State1, MyStates.State2] }

...但不是以下:

const config: StateMachineConfig = { [MyStates.State1]: [MyStates.State2], [MyStates.State2]: [MyStates.State3], [MyStates.State3]: [MyStates.State2, MyStates.State3] // error: value in array is same as key }

P粉252116587
P粉252116587

全部回覆 (1)
P粉864872812

您可以為此使用映射類型和排除

type StateMachineConfig = { [state in State]: Exclude[]; };

(線上示範)

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!