Type de date dactylographié?


218

Comment exprimer des dates en TypeScript? Les dates ne sont pas un type TypeScript , alors dois-je utiliser anyou object? Il semble qu'il y ait une "bonne" façon de procéder:

let myDate: any = new Date();

Je n'ai pas pu trouver grand-chose sur Google, bien que ce soit une question aussi simple.


4
Les types JS fonctionnent dans TS.
Amy

3
Vous pouvez utiliser des interfaces et des classes comme types.
Murat Karagöz

Réponses:


279

La réponse est super simple, le type est Date:

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

C'est la même chose qu'avec toutes les autres instances d'objet :)


Quel est le nom de l'ensemble typesqui comprend Dateainsi que Basic Typesréférencé dans OP? Je nomme un module pour les méthodes d'extension.
ttugates

2
@ttugates Voulez-vous dire des types d'unions comme par exemple string | number | boolean | null | undefined | symbol | Date? Vous pouvez utiliser un alias de type pour éviter les répétitions.
str

Oh non. Pas sûr de la portée de celui-ci .. Mais smth à peu près analogue aux systemtypes .Net . Voir Objets intégrés standard . Existe-t-il un nom plus concis et largement utilisé?
ttugates du

@ttugates Regrouper les types primitifs et les objets de date me semble assez arbitraire. Je ne pense pas qu'il existe un nom largement utilisé pour cela en JavaScript. En outre, la question d'origine n'est pas liée à votre question de suivi. Vous devriez en demander un nouveau à la place.
str

1
"C'est la même chose qu'avec toutes les autres instances d'objet :)" Ce n'est pas exactement vrai. string,, numberetboolean tous les utilisateurs types minuscules dactylographiée, si l' on peut raisonnablement attendre d' un dategenre à exister , mais ils obtiennent une erreur quand ils essaient de l' utiliser. (du moins, c'est ce qui m'a amené sur cette page)
Kip

82

Chaque classe ou interface peut être utilisée comme type dans TypeScript.

 const date = new Date();

connaîtra déjà la datedéfinition de type, tout comme Dateun objet TypeScript interne référencé par l'interface DateConstructor.

Et pour le constructeur que vous avez utilisé, il est défini comme:

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

Pour le rendre plus explicite, vous pouvez utiliser:

 const date: Date = new Date();

Il se peut que vous manquiez les définitions de type, le Datevient pour mon exemple de la bibliothèque ES6, et dans mon tsconfig.jsonj'ai défini:

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

Vous pouvez adapter ces paramètres pour cibler votre version souhaitée de JavaScript.


La date est d'ailleurs une interface de 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;
}

2
new Date () est déjà la même que la date actuelle ou actuelle. Il n'est pas nécessaire de déclarer quelque chose qui est déjà l'objet initialisé.
Thiago de Oliveira Cruz

15

Typescript reconnaît l'interface Date de la boîte - tout comme vous le feriez avec un nombre, une chaîne ou un type personnalisé. Il suffit donc d'utiliser:

myDate : Date;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.