Estou tentando pegar uma parte da base de código que estava usando o tipo string e convertê-la para um tipo semelhante a enum, usando TypeScript. O problema é que em alguns lugares os valores de string são ligeiramente diferentes. Em vez de fazer dois tipos semelhantes a enum quase idênticos, há uma maneira de fazer um único tipo em que vários valores correspondem à mesma chave?
Minha tentativa é assim (o que não funciona):
const STATUS = {
CREATED: "CREATED",
PICKED_UP: "PICKED UP" | "PICKED_UP",
DELIVERED: "DELIVERED" | "DEL"
} as const
type ObjectValues<T> = T[keyof T];
type Status = ObjectValues<typeof STATUS>;
Estou procurando uma solução que faça isso:
console.log(STATUS.PICKED_UP === "PICKED UP" && STATUS.PICKED_UP === "PICKED_UP") //should be true
doThingWithStatus("PICKED_UP") //should be ok, assuming function expects a type Status input
Obrigado, pessoal!