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

132
Visualizações
Clave anidada de clave de T en Typescript

Tengo una interfaz como esta...

 export interface IMyInterface { test1: { test1Sub: { test1SubSub: string } }, test2: { test2Sub: { test2SubSub: string } } }

Me gustaría poder escribir fuertemente los nombres de los niveles anidados en una función genérica para darle a TypeScript intellisense algo como esto que está en una clase genérica que pasa en Tipo T.

 getSetting = (level1: keyof T, level2: keyof keyof T) => { console.log(level1, level2) }

es posible? Como lo tengo en este momento me da este aviso, funciona bien para 'test1' pero no para 'test1Sub;

settings.getPageSettings('test1', 'test1Sub')

El argumento de tipo '"test1Sub"' no se puede asignar al parámetro de tipo '"toString" | "valorDe" | "toLocaleString"'

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

0

No desea keyof keyof para el subnivel, ya que serán las keys de cada tipo definidas por keyof IMyInterface , en su lugar, desea keyof T[K]

Aquí hay un patio de recreo rápido.

 export interface IMyInterface { test1: { test1Sub: { test1SubSub: string } }, test2: { test2Sub: { test2SubSub: string } } } function getSetting<T extends IMyInterface, K extends keyof T>(level1: K, level2: keyof T[K]) { console.log(level1, level2) } // usage const myInterface:IMyInterface ={ test1: { test1Sub: { test1SubSub: 'subsub1' } }, test2: { test2Sub: { test2SubSub: 'subsub2' } } } getSetting('test1', 'test1Sub'); getSetting('test2', 'test1Sub'); // ^^^^^^^^ // Argument of type '"test1Sub"' is not assignable to parameter of type '"test2Sub"'
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