cari

Rumah  >  Soal Jawab  >  teks badan

Hadkan nilai tatasusunan dalam rekod generik untuk tidak mengandungi nilai yang sama dengan kunci yang ditetapkan?

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粉252116587P粉252116587486 hari yang lalu789

membalas semua(1)saya akan balas

  • P粉864872812

    P粉8648728122023-09-17 00:42:18

    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)

    balas
    0
  • Batalbalas