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

209
Visualizações
Cómo sobrecargar una función JavaScript que está definida en un objeto

He definido algunas funciones en este objeto dentro de una calculator de funciones porque quiero encadenarlas. Mi objetivo es sobrecargar la función addNumber pero parece que no puedo obtener la sintaxis correcta.

A continuación se muestra un ejemplo de lo que quiero lograr (no funcionará porque la sintaxis es incorrecta)

 const calculator = () => { return { result: 0, addNumber(a: number) : number; addNumber(a: number | b: number): number; addNumber(a: number | b: string): number { // Implementation to add numbers depending on function overload return this; }, multiplyNumber(a) { this.result = this.result * a; return this; }, log() { console.log(this.result); } }; } // logs 10 calculator().addNumber(10).log(); // logs 25 calculator().addNumber(10,15).log(); // logs 25 calculator().addNumber(10,'15').log();

Este fue el ejemplo que me dio la idea, sin embargo, la función se define normalmente. ¿Cuáles son algunas formas en que puedo sobrecargar una función que está definida en el objeto?

 function makeDate(timestamp: number): Date; function makeDate(m: number, d: number, y: number): Date; function makeDate(mOrTimestamp: number, d?: number, y?: number): Date { if (d !== undefined && y !== undefined) { return new Date(y, mOrTimestamp, d); } else { return new Date(mOrTimestamp); } } const d1 = makeDate(12345678); const d2 = makeDate(5, 5, 5); const d3 = makeDate(1, 3);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si está dispuesto a cambiar a una clase anónima, entonces es bastante simple sobrecargarse:

 const calculator = () => { return new class { result = 0; addNumber(a: number) : this addNumber(a: number, b: number): this addNumber(a: number, b: string): this addNumber(a: number, b?: number | string): this { // Implementation to add numbers depending on function overload return this; } multiplyNumber(a: number) { this.result = this.result * a; return this; } log() { console.log(this.result); } }; }

Enlace del patio de recreo

Los métodos literales de objetos y las expresiones de funciones no admiten la sobrecarga. La única otra opción es usar una expresión de función con una aserción de tipo:

 const calculator = () => { return { result: 0, addNumber : function (a: number, b?: number | string) { return this; } as { <T>(this: T, a: number) : T <T>(this: T, a: number, b: number): T <T>(this: T, a: number, b: string): T } }; }

Enlace del patio de recreo

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