typescript - Pot să am un Enum de obiecte?


Aș dori să definesc un enum (sau tip, nu sunt sigur dacă am terminologia corectă) ca fiind al unui anumit obiect, astfel:

enum Notes {
  { subDir: "list", desc: "file contains list" },
  { subDir: "maps", desc: "file contains maps" },
}

Adică, o instanță de tip Notes, poate fi doar din următorul tip, și cu proprietățile de mai sus definite în enum:

interface Descriptor {
  subDir: string;
  desc: string;
}

Este acest lucru posibil, fie folosind un enum, fie printr-o altă metodologie?

Aceasta este cea mai apropiată realizare a ceea ce mi-am dorit, totuși nu pot face ca tipul în sine să fie văzut ca o instanță a Descriptorului:

type Notes =
  { subDir: "list", desc: "file contains lists" } |
  { subDir: "map", desc: "file contains maps" };

interface Descriptor {
  subDir: string;
  desc: string;
}

Răspuns #1

Nu, enum este constructul/tipul greșit de folosit aici. Cred că vrei doar un array numit Notes care să conțină una sau mai multe instanțe care respectă interfața Descriptor

Notes: Descriptor[] = [
    { subDir: "list", desc: "file contains list" },
    { subDir: "maps", desc: "file contains maps" }];

Răspunsul #2

Tipul tău Notes funcționează pentru mine într-o interfață mai mare:

type Notes =
  { subDir: "list", desc: "file contains lists" } |
  { subDir: "map", desc: "file contains maps" };

interface BiggerInterface { 
    notes: Notes[];
}
let b1: BiggerInterface = {
    notes: [  // OK
        { subDir: "list", desc: "file contains lists" },
        { subDir: "map", desc: "file contains maps" },
    ]
};
let b2: BiggerInterface = {
    notes: [  // error
        { subDir: "list", desc: "file contains something else" }
    ]
};

Dacă aceasta nu era ceea ce aveai în minte, te rog să clarifici întrebarea.