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
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);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).
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.