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

377
Visualizações
¿Por qué funciona mi método reduce () si defino la matriz en TypeScript pero no cuando uso un archivo modelo?

He definido este objeto en el archivo TypeScript y he usado el siguiente método reduce() y no hay ningún problema con él.

 sampleList = { totalRecordsTest: {}, sampleList: [ { parent: 'Sample Text 2', children: [ { id: 1, text: "Sample Text 1" }, ], }, { parent: 'Sample Text 2', children: [ { id: 2, text: "Sample Text 2" }, ], }, { parent: 'Sample Text 3', children: [ { id: 3, text: "Sample Text 3" }, ], }, ] } let grouped = this.sampleList.sampleList.reduce((groups, current) => { groups[current.parent] = groups[current.parent] || []; groups[current.parent].push(...current.children); return groups; }, Object.create(null)); this.groupedSampleList = Object.keys(grouped).map((key) => ({ parent: key, children: grouped[key], }));

Sin embargo, cuando traté de crear un archivo de interfaz de modelo para "sampleList" en otro archivo, aparece el error El tipo 'indefinido' no se puede usar como un tipo de índice en el siguiente método para la variable actual .

Archivo mecanografiado

 let grouped2 = this.sampleList.reduce((groups, current) => { groups[current.parent] = groups[current.parent] || []; groups[current.parent].push(...current.children); return groups; }, Object.create(null));

Importar modelo en TypeScript

 sampleList: SampleList[] = []

Archivo modelo

 export interface SampleListModel { parent?: string | '-', children?: ChildrenSampleModel[]; } export class SampleList implements SampleListModel { constructor( public parent?: string | '-', public children?: ChildrenSampleModel[] ) { } } export interface ChildrenSampleModel { id?: number, text?: string } export class ChildrenSample implements ChildrenSampleModel { constructor( public id?: number, public text?: string ) { } }

Solución

El parent se declara como opcional, por lo que puede no estar definido y cuando lo uso como índice arrojará el error "El tipo 'indefinido' no se puede usar como un tipo de índice en el siguiente método para la variable actual".

 export interface SampleListModel { parent: string, children: ChildrenSampleModel[]; } export class SampleList implements SampleListModel { constructor( public parent: string, public children: ChildrenSampleModel[] ) { } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede deberse a que parent es opcional en el constructor de SampleList , por lo que puede no estar definido y no puede usarlo como índice.

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