Typoskript ERSTELLUNGSDATUM Typ Fehler
Arbeiten mit typescript 1.4 ich habe komische Fehler auf die folgenden code-Zeilen :
var dateFrom:Date;
var dateTo:Date;
if(typeof discount.dateFrom === "string"){
dateFrom = new Date(discount.dateFrom); //Line 362
} else {
dateFrom = discount.dateFrom;
}
if(typeof discount.dateTo === "string"){
dateTo = new Date(<string>discount.dateTo); //Line 368
} else {
dateTo = discount.dateTo;
}
Den transpiler, gibt Sie Folgendes zurück:
[FULL_PATH]/Quotation.ts(362,37): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'string'.
[FULL_PATH]/Quotation.ts(368,35): error TS2352: Neither type 'Date' nor type 'string' is assignable to the other.
Die Differenz von der Linie 362 und 368 sind zwei Fälle, die ich versucht, um das Problem zu beheben.
Habe ich dieses gimmic an anderer Stelle in den code ein und es funktionierte gut.
Ich bin mit der definition der Date-Konstruktor von lib.d....ts-Referenz :
new (): Date;
new (value: number): Date;
new (value: string): Date;
new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;
(): string;
- Der Fehler in Zeile #362 scheint offensichtlich zu sein... das argument des Konstruktors erwartet ein
string
oder einenumber
, sondern übergeben Sie es einer anderenDate
. Es sei denndiscount.dateFrom
ist nicht dasselbe wie die variable deklariert an der Spitze? - Ich denke, war, dass die Linie 368 sollte das Problem beheben
- Das problem mit der Zeile #368 ist, dass es gibt keine bekannte Umwandlung von
Date
zustring
. Es ist wie Maschinenschrift, sagen Sie, dass Sie eine ungültige Stimmen. Wenn es möglich ist, zur Laufzeit, Art derdiscount.dateFrom
oderdiscount.dateTo
zustring
, dann sollten Sie erklären, wieany
statt alsDate
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt
discount.dateFrom
ist ein union-Typ, wiestring|Date
, es sieht aus wie Sie versuchen, verwenden Sie eine Art Garde auf die Eigenschaft eines Objekts, nicht auf einer Ebene lokale variable. Nicht unterstützt werden:Jedoch, wenn Sie schreiben:
Dann funktionieren sollte.
dateFromProp
nicht seinem Typ abgeleitet aus dem Typ derdiscount.dateFrom
? Welche version des TS-union-Typen eingeführt, oder haben Sie sich versteckt die ganze Zeit da?Dank @danludwig die bekannten Wandler aus
date
zustring
ist.toString()
typeof discount.dateTo === 'string'
Sie sollten nicht haben zu rufen.toString()
auf Sie. Wenn es möglich ist, fürdiscount.dateTo
entwederstring
oderDate
, dann sollte es erklärt werden wieany
.any
.