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.
