Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

230
Vistas
¿Cómo usar el formato de duración de momento en TypeScript?

Estoy usando moment.js en mi proyecto TypeScript (Ionic2/Angular2). A raíz de esta publicación , ahora quiero probar un complemento de formato de duración de momento

Tengo el paquete npm y la definición de tipo y puedo usarlo importando como ...

 import moment from 'moment'; ... let duration = moment.duration(decimalHours, 'hours');

Ahora quiero usar el formato de duración de momento

Lo instalé a través npm install moment-duration-format --save y luego la definición de tipo a través npm i @types/moment-duration-format --save .

Puedo ver ambos módulos npm.

Como siempre, siempre hay algún misterio sobre cómo usar tales definiciones de tipos (el uso, incluida la importación, nunca parece estar en ningún doco).

He intentado agregar import 'moment-duration-format'; , import duration from 'moment-duration-format'; (moment-duration-format/index.d.ts' no es un módulo).

Recibo un error al intentar usar de la siguiente manera...

 let dd = moment.duration.format(400.99, 'hours').format('D:HH:mm'); // (TS error [ts] Property 'format' does not exist on type '(inp?: DurationInputArg1, unit?: DurationConstructor) => Duration'.

¿Alguien tiene alguna idea sobre cómo usar esto en TypeScript ?

Gracias por adelantado

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Estaba usando la solución alternativa aquí , pero ahora parece que la definición de ype se ha solucionado. Obteniendo una actualización del tipo def Así que puedo hacer lo siguiente...

 import * as moment from 'moment'; import 'moment-duration-format'; let duration = moment.duration(decimalHours, 'hours') ; let options : moment.DurationFormatSettings = { forceLength : false, precision : 0, template : formatString, trim : false }; let result = duration.format(formatString, 0, options);
over 4 years ago · Santiago Trujillo Denunciar

0

Está utilizando la duration como una propiedad en lugar de invocarla. Probar:

 let dd = moment.duration(400.99, 'hours').format('D:HH:mm');

En realidad, esto no es un problema de TypeScript. Tampoco funcionaría con JavaScript. En JavaSctript, obtendría un error de tiempo de ejecución, mientras que TypeScript no le permite hacerlo en tiempo de compilación (lo que demuestra su valor).

over 4 years ago · Santiago Trujillo Denunciar

0

Estoy teniendo el mismo problema...

Parece como si hubiera un error en la definición del tipo. Otros tienen el mismo problema que puede ver aquí: https://github.com/souldreamer/noti-cli/blob/ef104c22792e0dfeb67d3372b04e231d45ffaa55/src/shared/pipes.ts#L38

Hubo una solución para el problema como parte de una solicitud de extracción en github, que desafortunadamente se cerró sin fusionarse: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/14327

Como solución temporal, puede usar la línea de código del primer enlace. Como segundo paso, debemos intentar crear una nueva solicitud de extracción en github, para solucionar el problema en versiones futuras.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda