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 i moment.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

Relaterte artikler