Typoskript Datumstyp?

218

Wie drücke ich Daten in TypeScript aus? Daten sind kein TypeScript-Typ , verwende ich also anyoder object? Es scheint, als gäbe es einen "richtigen" Weg:

let myDate: any = new Date();

Ich konnte bei Google nicht viel finden, obwohl es eine so einfache Frage war.

VSO
quelle
4
JS-Typen funktionieren in TS.
Amy
3
Sie können Schnittstellen und Klassen als Typen verwenden.
Murat Karagöz

Antworten:

279

Die Antwort ist super einfach, der Typ ist Date:

const d: Date = new Date(); // but the type can also be inferred from "new Date()" already

Es ist das gleiche wie bei jeder anderen Objektinstanz :)

str
quelle
Wie lautet der Name des Satzes typesdas schließt Datesowie Basic Typesin OP verwiesen? Ich benenne ein Modul für Erweiterungsmethoden.
ttugates
2
@ttugates Meinst du Gewerkschaftstypen wie zum Beispiel string | number | boolean | null | undefined | symbol | Date? Sie können einen Typalias verwenden , um Wiederholungen zu vermeiden.
Str
Ach nein. Ich bin mir nicht sicher über den Umfang. Aber etwas ungefähr analog zu .Net- systemTypen. Siehe Integrierte Standardobjekte . Gibt es einen prägnanteren, weit verbreiteten Namen?
ttugates
@ttugates Das Gruppieren von primitiven Typen und Datumsobjekten erscheint mir ziemlich willkürlich. Ich glaube nicht, dass es dafür in JavaScript einen weit verbreiteten Namen gibt. Die ursprüngliche Frage bezieht sich auch nicht auf Ihre Folgefrage. Sie sollten stattdessen einen neuen fragen.
Str
1
"Es ist das gleiche wie bei jeder anderen Objektinstanz :)" Dies ist nicht genau richtig. string, numberUnd booleanalle Benutzer Klein Typen in Maschinenschrift, so dass man vernünftigerweise erwarten könnte eine dateArt zu existieren , aber sie einen Fehler, wenn sie versuchen , es zu benutzen. (Zumindest hat mich das auf diese Seite gebracht)
Kip
82

Jede Klasse oder Schnittstelle kann als Typ in TypeScript verwendet werden.

 const date = new Date();

kennt die dateTypdefinition bereits, ebenso Datewie ein internes TypeScript-Objekt, auf das von der DateConstructor-Schnittstelle verwiesen wird.

Für den von Ihnen verwendeten Konstruktor ist Folgendes definiert:

interface DateConstructor {
    new(): Date;
    ...
}

Um es deutlicher zu machen, können Sie Folgendes verwenden:

 const date: Date = new Date();

Möglicherweise fehlen Ihnen jedoch die Typdefinitionen, die Datefür mein Beispiel aus der ES6-Bibliothek stammen, und in meiner habe tsconfig.jsonich Folgendes definiert:

"compilerOptions": {
    "target": "ES6",
    "lib": [
        "es6",
        "dom"
    ],

Sie können diese Einstellungen an Ihre gewünschte JavaScript-Version anpassen.


Das Datum ist übrigens eine Schnittstelle von lib.es6.d.ts:

/** Enables basic storage and retrieval of dates and times. */
interface Date {
    /** Returns a string representation of a date. The format of the string depends on the locale. */
    toString(): string;
    /** Returns a date as a string value. */
    toDateString(): string;
    /** Returns a time as a string value. */
    toTimeString(): string;
    /** Returns a value as a string value appropriate to the host environment's current locale. */
    toLocaleString(): string;
    /** Returns a date as a string value appropriate to the host environment's current locale. */
    toLocaleDateString(): string;
    /** Returns a time as a string value appropriate to the host environment's current locale. */
    toLocaleTimeString(): string;
    /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */
    valueOf(): number;
    /** Gets the time value in milliseconds. */
    getTime(): number;
    /** Gets the year, using local time. */
    getFullYear(): number;
    /** Gets the year using Universal Coordinated Time (UTC). */
    getUTCFullYear(): number;
    /** Gets the month, using local time. */
    getMonth(): number;
    /** Gets the month of a Date object using Universal Coordinated Time (UTC). */
    getUTCMonth(): number;
    /** Gets the day-of-the-month, using local time. */
    getDate(): number;
    /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */
    getUTCDate(): number;
    /** Gets the day of the week, using local time. */
    getDay(): number;
    /** Gets the day of the week using Universal Coordinated Time (UTC). */
    getUTCDay(): number;
    /** Gets the hours in a date, using local time. */
    getHours(): number;
    /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */
    getUTCHours(): number;
    /** Gets the minutes of a Date object, using local time. */
    getMinutes(): number;
    /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */
    getUTCMinutes(): number;
    /** Gets the seconds of a Date object, using local time. */
    getSeconds(): number;
    /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */
    getUTCSeconds(): number;
    /** Gets the milliseconds of a Date, using local time. */
    getMilliseconds(): number;
    /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */
    getUTCMilliseconds(): number;
    /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */
    getTimezoneOffset(): number;
    /**
      * Sets the date and time value in the Date object.
      * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT.
      */
    setTime(time: number): number;
    /**
      * Sets the milliseconds value in the Date object using local time.
      * @param ms A numeric value equal to the millisecond value.
      */
    setMilliseconds(ms: number): number;
    /**
      * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC).
      * @param ms A numeric value equal to the millisecond value.
      */
    setUTCMilliseconds(ms: number): number;

    /**
      * Sets the seconds value in the Date object using local time.
      * @param sec A numeric value equal to the seconds value.
      * @param ms A numeric value equal to the milliseconds value.
      */
    setSeconds(sec: number, ms?: number): number;
    /**
      * Sets the seconds value in the Date object using Universal Coordinated Time (UTC).
      * @param sec A numeric value equal to the seconds value.
      * @param ms A numeric value equal to the milliseconds value.
      */
    setUTCSeconds(sec: number, ms?: number): number;
    /**
      * Sets the minutes value in the Date object using local time.
      * @param min A numeric value equal to the minutes value.
      * @param sec A numeric value equal to the seconds value.
      * @param ms A numeric value equal to the milliseconds value.
      */
    setMinutes(min: number, sec?: number, ms?: number): number;
    /**
      * Sets the minutes value in the Date object using Universal Coordinated Time (UTC).
      * @param min A numeric value equal to the minutes value.
      * @param sec A numeric value equal to the seconds value.
      * @param ms A numeric value equal to the milliseconds value.
      */
    setUTCMinutes(min: number, sec?: number, ms?: number): number;
    /**
      * Sets the hour value in the Date object using local time.
      * @param hours A numeric value equal to the hours value.
      * @param min A numeric value equal to the minutes value.
      * @param sec A numeric value equal to the seconds value.
      * @param ms A numeric value equal to the milliseconds value.
      */
    setHours(hours: number, min?: number, sec?: number, ms?: number): number;
    /**
      * Sets the hours value in the Date object using Universal Coordinated Time (UTC).
      * @param hours A numeric value equal to the hours value.
      * @param min A numeric value equal to the minutes value.
      * @param sec A numeric value equal to the seconds value.
      * @param ms A numeric value equal to the milliseconds value.
      */
    setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number;
    /**
      * Sets the numeric day-of-the-month value of the Date object using local time.
      * @param date A numeric value equal to the day of the month.
      */
    setDate(date: number): number;
    /**
      * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC).
      * @param date A numeric value equal to the day of the month.
      */
    setUTCDate(date: number): number;
    /**
      * Sets the month value in the Date object using local time.
      * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively.
      * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used.
      */
    setMonth(month: number, date?: number): number;
    /**
      * Sets the month value in the Date object using Universal Coordinated Time (UTC).
      * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively.
      * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used.
      */
    setUTCMonth(month: number, date?: number): number;
    /**
      * Sets the year of the Date object using local time.
      * @param year A numeric value for the year.
      * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified.
      * @param date A numeric value equal for the day of the month.
      */
    setFullYear(year: number, month?: number, date?: number): number;
    /**
      * Sets the year value in the Date object using Universal Coordinated Time (UTC).
      * @param year A numeric value equal to the year.
      * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. Must be supplied if numDate is supplied.
      * @param date A numeric value equal to the day of the month.
      */
    setUTCFullYear(year: number, month?: number, date?: number): number;
    /** Returns a date converted to a string using Universal Coordinated Time (UTC). */
    toUTCString(): string;
    /** Returns a date as a string value in ISO format. */
    toISOString(): string;
    /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */
    toJSON(key?: any): string;
}
k0pernikus
quelle
2
new Date () ist bereits das gleiche wie jetzt oder aktuelles Datum. Es ist nicht erforderlich, etwas zu deklarieren, das bereits das initialisierte Objekt ist.
Thiago de Oliveira Cruz
15

Typescript erkennt die Datumsschnittstelle sofort - genau wie bei einer Zahl, einer Zeichenfolge oder einem benutzerdefinierten Typ. Also einfach benutzen:

myDate : Date;
David Haddad
quelle