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

147
Visualizações
El método de acceso JS/TS desde la clase devuelve indefinido

En Typescript/Javascript, dada la clase:

 class T { method_a() { console.log('Inside method a'); } }

Necesito acceder al método (ilimitado) de esta manera, pero en su lugar no está undefined :

 const method_to_be_passed = T.method_a; // undefined

En python, obtendría el método independiente así:

 class P: def method_a(): print('inside method a') the_method = P.method_a # <function P.method_a at 0x7fee48eff310>

Y luego puedo vincularlo a un objeto para llamarlo. ¿Cómo haría el equivalente en TS/JS?

El compilador mecanografiado dice el siguiente error:

error TS2339: Property 'method_a' does not exist on type 'typeof T'.

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

0

En JavaScript, se puede acceder a los métodos de instancia de una clase a través del prototype de la clase:

 class T { method_a() { console.log('Inside method a'); } } const method_to_be_passed = T.prototype.method_a;

Tenga en cuenta que si hace referencia a this instancia de su clase dentro de su método, deberá vincular su método a alguna instancia de la clase T de esta manera:

 const method_to_be_passed = T.prototype.method_a.bind(some_instance_of_T);
about 4 years ago · Juan Pablo Isaza Relatório

0

Recuerde que una definición de class en JavaScript/TypeScript es solo azúcar sintáctica (es decir , solo abreviatura ) para definir una función de constructor y propiedades de prototype :

Así que esto

 class T { val: number = 1; method_a() { console.log('Inside method a'); } }

(Agregué la propiedad val como un ejemplo adicional)

Es equivalente a esto:

 function T() { this.val = 1; } T.prototype.method_a = function() { console.log('Inside method a'); };

Por lo tanto, para obtener una referencia a la función method_a , debe usar el calificador de prototype :

 const method_to_be_passed = T.prototype.method_a;

Esto es diferente a otros lenguajes como Python, C#, C++, etc., que le permiten hacer referencia tanto a instancias como a no instancias (es decir, static ) de un tipo sin calificación adicional (por supuesto, no puede usar de manera significativa miembros de instancias sin this parámetro, por supuesto). ).


Si desea que method_a no requiera this parámetro, debe convertirlo en un miembro estático:

 class T { val: number = 1; static method_a() { console.log('Inside method a'); } }

que te permite hacer esto:

 const method_to_be_passed = T.method_a;

Ejemplo de patio de recreo:

https://www.typescriptlang.org/play?target=1#code/MYGwhgzhAEASkEkB2EAuYnAKYFksFsAjLAJxgG8AoS6W6ANzBAC5okBXI06AXmgEYA3NTrQA5llQMmABRDsI-ABQBKVhy4loVUaJKT2JJNFQALAJYQAdIxDQA1AOGiAviLrmU6TFgBi7TFVtGl1aYAB7FHCQLCsQcLElAHJPNAxsf0wklWc6NzdKUEgYeAgAZXRUc2A8TQgqENo0quBpFjZOYi0+IXcmyurxSTa5BWU1Ds1g0Np9VENjUoqwFtqu61sHJ0boAtFmwYPgTOAgnRmIqJi4hOSjk+zc2nygA

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