Hadkan nilai tatasusunan dalam rekod generik untuk tidak mengandungi nilai yang sama dengan kunci yang ditetapkan?
P粉252116587
P粉252116587 2023-09-16 14:13:52
0
1
737

Saya sedang melaksanakan mesin keadaan mudah. Konfigurasi adalah seperti berikut:

type StateMachineConfig<State extends string, TransitionState extends State> = Record<State, TransitionState[]>;

Setiap kekunci hendaklah berupa penghitungan rentetan.

Setiap nilai hendaklah berupa tatasusunan penghitungan rentetan yang sama, tetapi Negeri yang diberikan sebagai kunci tidak boleh dimasukkan dalam tatasusunan

Dengan itu mengambil kira status berikut:

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

...perkara berikut sepatutnya berfungsi:

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

...tetapi bukan yang berikut:

const config: StateMachineConfig<MyStates, MyStates> = {
    [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

membalas semua(1)
P粉864872812

Anda boleh menggunakan jenis pemetaan untuk ini dan 排除:

type StateMachineConfig<State extends string, TransitionState extends State> = {
  [state in State]: Exclude<TransitionState, state>[];
};

(Demo Dalam Talian)

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!