Wpis z mikrobloga

public countDays(startDate: Date, endDate: Date): number {
console.log(typeof startDate);
const days = (endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24);
return Math.ceil(days);

}

Absolutnie nie czaje... taki kod, na konsoli wypisuje mi "string"... czemu ? skoro parametr startDate jest typu Date ? już siwieje od tego ts... . Aplikacja ionic z angularem metodę wywołuje z template html.
#programowanie #angular #typescript
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Typowanie zakłamuje Ci rzeczywisty typ zmiennej. Gdzieś tam w warstwie wyżej do startDate w obiekcie trip dostaje się string a nie Date.
  • Odpowiedz
@DaxterPoker: To że kompilator pokazuje Ci że oczekiwany typ to Date czy String to ok, bo to są twoje założenia.
Dokładnie tak samo zadziała jeżeli zamiast silnego typowania podasz ":any".

Problemem jest natomiast jaki jest rzeczywisty typ danych który jest przykazywany w "view.trip.startDate". Widać że jest to Sting, czyli problem masz na poziomie ustawiania tego pola ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Mark9wi: @rossecki: nie no to dane które wpisuje w formularzu, i z tego formularza faktycznie wyciągam string jednak nie rzuca się gdy wkładam to do Date - co jest mega dziwne. Chciałem zrobić typowany formularz :
.ts :
tripform: FormGroup = new FormGroup({
tripId: new FormControl({value: undefined, disabled: false}, { nonNullable: true }),
name: new FormControl({value: '', disabled: false}, { nonNullable: true }),
budget: new FormControl({value: undefined,
DaxterPoker - @Mark9wi: @rossecki: nie no to dane które wpisuje w formularzu, i z teg...

źródło: comment_16731068823dad5tvCxlzaSmY5pUvjx7.jpg

Pobierz
  • Odpowiedz
Dawno nie pisałem formów ale raczej to że podajesz że dane pole ma być typu datetime nie oznacza że taki format tam dostajesz. Zawsze możesz dodać sobie dodatkowe parsowanie w metodzie. Jeżeli to string to try parse na datetime
  • Odpowiedz