Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
usar clave de objeto como clave para otro objeto

Quiero crear un tipo en TypeScript y usar valores de otro objeto para sus claves.

 const routes = { home: "HOME", profile: "PROFILE" } export type NavigatorParamList = { [routes.home]: undefined; [routes.profile]: undefined; };

¡Sé que este código no funciona! ¿Alguna idea de cómo hacerlo?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Las propiedades de su objeto son cadenas variables y TypeScript no le permitirá usarlas como propiedades calculadas para un tipo a menos que las convierta en literales de solo lectura con as const .

 const routes = { home: "HOME", profile: "PROFILE" } as const;
about 4 years ago · Juan Pablo Isaza Relatório

0

Esto es para lo que son las enumeraciones de cadenas :

Parque infantil TS

 enum Route { Home = "HOME", Profile = "PROFILE" } // using a union of individual enum members: type NavigatorParamList1 = Record<Route.Home | Route.Profile, undefined>; // { HOME: undefined; PROFILE: undefined; } // or if you want to use all enum members: type NavigatorParamList2 = Record<Route, undefined>; // { HOME: undefined; PROFILE: undefined; } // or independently-defined members type NavigatorParamList3 = { [Route.Home]: undefined; [Route.Profile]: undefined; }
about 4 years ago · Juan Pablo Isaza Relatório

0

Es factible con tipos mapeados y la nueva cláusula as :

 const routes = { home: "HOME", profile: "PROFILE" } as const; type AcceptableKeyTypes = string | number | symbol; type ObjectWithValuesWhichCanBeKeys = {[key: AcceptableKeyTypes]: AcceptableKeyTypes}; type ValuesAsKeys<T extends ObjectWithValuesWhichCanBeKeys> = {[P in keyof T as T[P]]: unknown}; let test: ValuesAsKeys<typeof routes> = {HOME: 7, PROFILE: 4};

patio de recreo mecanografiado

Estoy usando aquí un tipo genérico: ValuesAsKeys<T> .

Los valores de T deben restringirse a tipos que sean aceptables como claves: cadena | número | símbolo.

la parte [P in keyof T] es un tipo asignado, que itera sobre todas las claves de T. Luego, la cláusula as asigna la clave a un nuevo valor, en este caso a T[P] , que es el valor de la clave actual clave iterada.

Por último, el valor es desconocido, por lo que puede usar cualquier valor nuevo que desee. en el ejemplo que doy, estoy usando números como los nuevos valores, pero puede ser cualquier cosa.

Tenga en cuenta que, como se dijo en otras respuestas, las routes deben tener la aserción as const , de modo que los valores de cadena se consideren tipos literales y luego se puedan usar como claves escritas.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda