angular - Overskrive moment.now() i en TypeScript-applikasjon
Jeg har en oppgave å synkronisere MomentJS med servertid i en Angular2-applikasjon.
MomentJS har en funksjon for å endre tidskilden som det er angitt her
Men TypeScript-kompilatoren lar meg ikke overskrive moment#now()-funksjonen, siden den eksporteres som en funksjon fra et namespace i moment.d.ts, så jeg får feilen.
Kan ikke tilordne til 'now' fordi det er en konstant eller en skrivebeskyttet egenskap.
I mellomtiden har moment.d.ts en kommentar for moment#now:
//... Overskriv for profitt
Så jeg antar at jeg gjør noe galt.
Jeg bruker angular-cli rc4, MomentJS 2.18.1 og importerer det som
import * as moment from "moment";
Jeg setter pris på hjelpen din.
Svar #1
"TypeScript-kompilatoren tillater meg ikke å overskrive
moment#now()-funksjonen, da den er eksportert som en funksjon fra et navnerom imoment.d.ts, så jeg får feilen."
Disse slags begrensninger er kun før kompilering, noe som betyr at du i praksis kan få TypeScript til å ignorere dem og la deg overstyre ved å kaste det til en any.
import * as moment from "moment";
// temporary cast as any to override.
(moment as any).now = () => serverDateTime
// continue with moment intellisense
