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

166
Visualizações
TypeScript Type Izar problema de "huevo o gallina"

Antes de que alguien marque esto como duplicado, revisé otras 2 preguntas que en realidad no resolvieron nada. Eran solo ideas para formas alternativas de resolver el problema exacto, pero no mostraban una solución a mi problema.

Al hacer una matriz en TypeScript, le asigné el tipo any[] , ya que aún no he importado el tipo de matriz. Sin embargo, tengo que pasar esta matriz a una declaración require para que los métodos de clase funcionen en esta matriz en particular.

Si hago la matriz primero (usando any[] ), entonces no podré escribir la matriz.

 let blockchain: any[] = []; // Pass array to import classes and functions const {/* stuff to import */} = require("./otherfile.js")(blockchain); type BlockType = InstanceType<typeof Block>; // How do I set blockchain's type to BlockType[]?

Sin embargo, si importo las clases primero, no podré pasar la matriz para dar la matriz correcta a los métodos de clase.

 // Pass array to import classes and functions const {/* stuff to import */} = require("./otherfile.js")(blockchain); // error type BlockType = InstanceType<typeof Block>; let blockchain: BlockType[] = [];

Importar el módulo dos veces, primero con una matriz vacía solo para obtener la clase, no es una opción para mí, ya que los métodos de clase de la importación original enviarán datos a la matriz vacía y no tendrá sentido.

EDITAR: para ser más específicos sobre las clases de módulos, esto es lo que sucede dentro del otro archivo.

 function exp(blockchain: any[]): Object { class Block { // public x: number, etc... constructor( // stuff... } static generate(/* params */): Block { // do stuff, edit properties... let block = new Block(/* args */); blockchain.push(block); // Array that was passed to module return block; } } return { Block: Block } }

La sugerencia de Scotty Jamison no funcionaría aquí porque la clase Block de la importación n.° 1 no sería la misma que la de la importación n.° 2, y sus métodos impulsarían matrices diferentes.

 let {Block1} = require("./otherfile.js")([]); let blockchain: Block1[] = []; let {Block2} = require("./otherfile.js")(blockchain); Block1.generate("yo"); Block2.generate("foobar"); console.log(blockchain.length); // 1
about 4 years ago · Juan Pablo Isaza
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