วันที่พิมพ์


218

ฉันจะแสดงวันที่ใน TypeScript ได้อย่างไร วันที่ไม่ใช่ประเภท TypeScriptฉันจะใช้anyหรือobjectไม่ ดูเหมือนว่าจะมีวิธี "ถูกต้อง" ที่จะทำ:

let myDate: any = new Date();

ฉันไม่พบอะไรมากบน Google แม้ว่าจะเป็นคำถามง่ายๆ


4
ประเภท JS ทำงานใน TS
เอมี่

3
คุณสามารถใช้อินเทอร์เฟซและคลาสเป็นชนิด
Murat Karagöz

คำตอบ:


279

คำตอบนั้นง่ายมากประเภทคือDate:

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

มันเหมือนกับอินสแตนซ์ของวัตถุอื่น ๆ :)


อะไรคือสิ่งที่ชื่อของชุดของtypesที่มีDateเช่นเดียวกับBasic Typesการอ้างอิงใน OP? ฉันกำลังตั้งชื่อโมดูลสำหรับวิธีการขยาย
ttugates

2
@ttugates คุณหมายถึงประเภทสหภาพอย่างเช่นstring | number | boolean | null | undefined | symbol | Date? คุณสามารถใช้นามแฝงประเภทเพื่อหลีกเลี่ยงการทำซ้ำ
str

ไม่นะ. ไม่แน่ใจในขอบเขตของมัน .. แต่จะมีความคล้ายคลึงกับsystemประเภท. net อย่างคร่าว ๆ ดูวัตถุในตัวมาตรฐาน มีชื่อที่ใช้กันอย่างแพร่หลายมากขึ้นรัดกุม?
ttugates

@ttugates การจัดกลุ่มชนิดดั้งเดิมและวัตถุวันที่เข้าด้วยกันดูเหมือนว่าจะเป็นเรื่องที่ฉันชอบ ฉันไม่คิดว่ามีชื่อที่ใช้กันอย่างแพร่หลายใน JavaScript นอกจากนี้คำถามเดิมไม่เกี่ยวข้องกับคำถามติดตามผลของคุณ คุณควรถามใหม่
str

1
"มันเหมือนกับอินสแตนซ์ของวัตถุอื่น ๆ ทุกตัว :)" นี่ไม่จริงอย่างแน่นอน string, numberและbooleanประเภทผู้ใช้ตัวพิมพ์เล็กทั้งหมดใน Typescript ดังนั้นอาจมีdateประเภทที่คาดว่าจะมีอยู่ แต่พวกเขาได้รับข้อผิดพลาดเมื่อพวกเขาพยายามที่จะใช้ (อย่างน้อยนั่นคือสิ่งที่นำฉันมาที่หน้านี้)
กีบ

82

ทุกคลาสหรือส่วนต่อประสานสามารถใช้เป็นประเภทใน TypeScript

 const date = new Date();

จะทราบเกี่ยวกับdateคำจำกัดความของประเภทแล้วว่าDateเป็นวัตถุ TypeScript ภายในที่อ้างอิงโดยอินเทอร์เฟซ DateConstructor

และสำหรับตัวสร้างที่คุณใช้มันถูกกำหนดเป็น:

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

หากต้องการทำให้ชัดเจนยิ่งขึ้นคุณสามารถใช้:

 const date: Date = new Date();

คุณอาจจะหายไปนิยามประเภทแม้ว่าDateมาสำหรับตัวอย่างของฉันจาก lib ES6 และในฉันtsconfig.jsonฉันได้กำหนด:

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

คุณอาจปรับการตั้งค่าเหล่านี้เพื่อกำหนดเป้าหมาย JavaScript รุ่นที่คุณต้องการ


วันที่เป็นวิธีการเชื่อมต่อจาก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 () เหมือนกันแล้วในตอนนี้หรือวันที่ปัจจุบัน ไม่จำเป็นต้องประกาศสิ่งที่เป็นวัตถุเริ่มต้นอยู่แล้ว
Thiago de Oliveira Cruz ครูซ

15

typescript จดจำอินเทอร์เฟซ Date ออกจากกล่อง - เช่นเดียวกับที่คุณใช้กับตัวเลขสตริงหรือประเภทที่กำหนดเอง ดังนั้นเพียงใช้:

myDate : Date;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.