Jenis Tanggal Tipe Scriptres?

218

Bagaimana cara mengekspresikan tanggal dalam TypeScript? Tanggal bukan tipe TypeScript , jadi apakah saya menggunakan anyatau object? Sepertinya akan ada cara yang "benar" untuk dilakukan:

let myDate: any = new Date();

Saya tidak dapat menemukan banyak hal di Google, meskipun itu pertanyaan yang sangat sederhana.

VSO
sumber
4
Jenis JS bekerja di TS.
Amy
3
Anda bisa menggunakan Antarmuka dan Kelas sebagai tipe.
Murat Karagöz

Jawaban:

279

Jawabannya sangat sederhana, tipenya adalah Date:

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

Ini sama dengan setiap instance objek lainnya :)

str
sumber
Apa nama Set typesyang termasuk Dateserta Basic Typesdireferensikan dalam OP? Saya memberi nama modul untuk metode ekstensi.
ttugates
2
@ttugates Apakah yang Anda maksud jenis serikat seperti misalnya string | number | boolean | null | undefined | symbol | Date? Anda bisa menggunakan jenis alias untuk menghindari pengulangan.
str
Oh tidak. Tidak yakin dengan ruang lingkup itu .. Tapi bertiga kira-kira analog dengan systemjenis Net . Lihat objek bawaan standar . Apakah ada nama yang lebih singkat digunakan dan lebih singkat?
ttugate
@ttugates Mengelompokkan tipe primitif dan objek tanggal bersama tampaknya cukup arbitrer bagi saya. Saya tidak berpikir ada nama yang banyak digunakan untuk itu dalam JavaScript. Selain itu, pertanyaan awal tidak terkait dengan pertanyaan tindak lanjut Anda. Anda harus bertanya yang baru sebagai gantinya.
str
1
"Ini sama dengan setiap contoh objek lainnya :)" Ini tidak sepenuhnya benar. string,, numberdan booleansemua jenis huruf kecil pengguna di dalam ScriptScript, jadi orang mungkin berharap ada datejenis tetapi mereka mendapatkan kesalahan ketika mereka mencoba untuk menggunakannya. (setidaknya, itulah yang membawaku ke halaman ini)
Kip
82

Setiap kelas atau antarmuka dapat digunakan sebagai tipe dalam TypeScript.

 const date = new Date();

akan sudah tahu tentang datedefinisi tipe seperti Dateobjek TypeScript internal yang dirujuk oleh antarmuka DateConstructor.

Dan untuk konstruktor yang Anda gunakan, didefinisikan sebagai:

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

Untuk membuatnya lebih eksplisit, Anda dapat menggunakan:

 const date: Date = new Date();

Anda mungkin kehilangan definisi tipe, yang Datedatang untuk contoh saya dari ES6 lib, dan di saya tsconfig.jsonsaya telah mendefinisikan:

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

Anda dapat menyesuaikan pengaturan ini untuk menargetkan versi JavaScript yang Anda inginkan.


Tanggal adalah dengan cara Interface dari 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
sumber
2
Tanggal baru () sudah sama dengan tanggal sekarang atau tanggal sekarang. Tidak perlu mendeklarasikan sesuatu yang sudah menjadi objek yang diinisialisasi.
Thiago de Oliveira Cruz
15

Naskah mengenali antarmuka Tanggal di luar kotak - sama seperti yang Anda lakukan dengan angka, string, atau jenis khusus. Jadi Cukup gunakan:

myDate : Date;
David Haddad
sumber