javascript - De ce primesc „Argumentul de tip 'Date' nu poate fi atribuit parametrului de tip 'string | number'” atunci când creez o dată cu un obiect de tip date?


Am o funcție care primește un obiect dată ca argument. Această funcție returnează o dată diferită.

function makeDate(date:Date) {
  return new Date(date); //<--error here
}
const newDate = new Date(); //
console.log(makeDate(newDate)); // Returns date object just fine

Typescript în Vscode afișează următoarea eroare:

"Argument de tip 'Date' nu poate fi atribuit parametrului de tip 'string | number'."

Deși documentația oficială afirmă că constructorul Date poate lua un număr (milisecunde), un șir (șir de dată), se pare că nu există nicio problemă în a crea un obiect de tip date trecând un alt obiect de tip date în constructorul Date. Prin urmare, m-aș aștepta să nu primesc nicio eroare.

Am căutat acest rezultat pe Google, dar problemele de pe SO și Github pe care le-am găsit nu par să răspundă la aceasta sau să explice problema (sau cel puțin eu nu înțeleg explicația în legătură cu exemplul meu).

Ar trebui să primesc această eroare? Și există o modalitate de a o remedia?

Mulțumesc!

Răspuns #1

Pentru că constructorul așteaptă un șir de caractere sau un număr, folosirea getTime îl va rezolva

function makeDate(date:Date) {
  return new Date(date.getTime()); //<--error here
}
const newDate = new Date(); //
console.log(makeDate(newDate)); // Returns date object just fine