javascript - 如何擴展 Date 類別
我正在製作一個 Angular2 應用程式,而我從控制器取得的所有日期都是這種格式 "2017-02-2700:00:00"。我想擴充 JS 的 Date 物件,使我在建立新物件時可以從字串中移除 T,而且它仍然像日期物件一樣運作。我目前嘗試的方法並沒有成功。我製作的 IDate 物件是擴充自 Date 物件,但它顯示出來只是 null,而不是日期物件。有人知道發生了什麼事以及如何修正嗎?如果在 TypeScript 無法做到,我願意改用 ES6 JS。我看過關於擴充 Date 物件的文章,但那是修改原本的 Date 物件,我希望能有一個叫做 IDate 的物件,它跟 Date 一樣,只是多了幾個方法。如果這是唯一的方法,我會將那個答案標記為解答。
export class IDate extends Date {
constructor() {
super();
}
value;
toDate(value: string): Date {
value.replace("T", " ");
return new Date(value);
}
getvalue() {
return this.value;
}
}
let t = new IDate();
let d = new Date();
console.log(t);
console.log(d);
主控台
IDate {}
Fri Mar 31 2017 11:53:59 GMT-0500 (Central Daylight Time)
答案#1
你只能在目標為 es6 時這樣擴展原生(內建)類型。
如果你不能以 es6 為目標,那你需要找到解決方法:擴展像 Error、Array 和 Map 這樣的內建類型可能不再可行。
更多相關資訊:
- 我如何在 TypeScript 中擴展一個主機對象(例如 Error)
- 無法擴展內建類型
- TypeScript 中的自訂錯誤類別
雖然並非所有這些都在討論擴展 Date,但問題仍然完全相同。