0
javascript 'Date'プロトタイプにプロパティを追加しようとしています。typescriptの既存の型にどのようにプロパティを追加しますか?
Object.defineProperty(Date.prototype, "fullYearUTC", {
get: function() { return this.getUTCFullYear(); },
enumerable: true,
configurable: true
});
は私がちょうどtypescriptですで次の操作を行うことができるだろうと思った:
JavaScriptでは、私はちょうどこれを行うだろう
class Date
{
get fullYearUTC(): number { return this.getUTCFullYear() }
}
を私はエラーを取得
Cannot redeclare block-scoped variable 'Date'.
なぜこれは機能しませんか?
(いいえ、あなたがこれを行うことは良いアイデアだと思うかどうかについてのコメント。この質問は、そのことについてではありませんしてください。)あなたはDate
という名前のクラスを作成することはできません
感謝を。しかし、実際にはtypescriptを使ってプロパティを実装したいと思っています。言語の穴のように思える、IMO。 – Spongman
あなたはタイプミスを使用しています。たとえば、タイプミスがあって 'configurabl:true'と書くと、オブジェクトが' PropertyDescriptor'タイプと一致しないのでコンパイルエラーが発生します。そして、あなたはgetterを 'interface Date'を使って追加するときにtypescriptを使用していますので、今からすべての日付のインスタンス(typescriptに関わらず)に' fullYearUTC'があります。ランタイムアスペクトに関しては、javascriptやtypescriptではなく、 'Date'オブジェクトを再宣言することはできません。 –