Extending the functionality of constructors in a Date subclass

Wanting to create a custom Date subclass with an overridden constructor:

export class MyDate extends Date {
  constructor(str: string) {
    super(str);
  }
}

However, when attempting to instantiate a MyDate object, it fails :

var myDate = new MyDate("2016-10-20T12:30:00+0200");
console.log(myDate.toDateString()); // throws an error, myDate is incorrect

An error message displays:

TypeError: Method Date.prototype.toDateString called on incompatible receiver [object Object]
.

Seeking a solution to override the Date constructor. Is this achievable?

Answer №1

After reviewing this inquiry along with the approved response, it appears that subclassing Date is not permitted in ES5. The provided ES6 code runs smoothly in Chrome due to Chrome's native support for ES6 classes (with removal of type annotations from the original code):

class MyDate extends Date {
  constructor(str) {
    super(str);
  }
}

var myDate = new MyDate("2016-10-20T12:30:00+0200");
console.log(myDate.toDateString());

If compatibility only needs to be ensured in environments supporting ES6 classes, adjust TypeScript's --target compiler option to 'es6'. Otherwise, alternative solutions will be necessary.

One plausible workaround involves defining MyDate so that it contains a Date as a member variable. For instance:

class MyDate {

  private date: Date;

  constructor(str: string) {
    this.date = new Date(str);
  }

  toDateString(): string {
    return this.date.toDateString();
  }
}

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

I'm curious, which ref tag should I utilize for draft.js?

I'm currently working on a form using Draft.js with Next.js and TS, but I've encountered some errors in my code. Here is what I have so far: import {Editor, EditorState} from 'draft-js'; const [editorState, setEditorState] = useState( ...

Enhance the express Response type and then export my updated type as a distinct module

I am currently working on developing a new 'common' module for my team. One of the key features it should have is an extension of both the response and request objects in Express. Our main goal is to achieve two things - first, extending the Req ...

Observable subscription does not result in updating the value

One of the challenges I'm currently facing in my Angular application is the synchronization of data from a server. To keep track of when the last synchronization took place, I have implemented a function to retrieve this information: fetchLastSyncDate ...

Maximizing the functionality of rowDoubleClick in Angular for consistent use across various components with shared ag-grid instances

I have implemented an ag-grid in 4 different Angular Components. My goal is to only enable the rowDoubleClicked functionality for one specific component. Unfortunately, when I apply this feature to the grid, it becomes enabled for all components. How can ...

Webclipse is having trouble locating a module, despite the fact that Angular CLI is able to

I am facing an issue with my project structure src | +--app | +--components | | | +-component.ts | +--entities | +--entity.ts In entity.ts, I have export class Entity { ... In component.ts, there is an import statement ...

Using the slice pipe on the data for a child component property is resulting in endless calls to the @Input set method

After incorporating a slice pipe into the data object below and passing that data to the child component's @Input method, there appears to be an endless loop of calls to that method. However, eliminating the slice pipe from the data object resolves th ...

Guide to releasing a NestJs library on npm using the nrwl/nx framework

Struggling with creating a publishable NestJS library using NX. Despite reading numerous documentations, I still can't figure it out. I've developed a NestJS library within an NX monorepository and now I want to publish just this library on NPM, ...

Insert the template's content into my inline component

I am facing an issue with a template I have created. The template structure is as follows: <template> <my-body-component inline-component> <slot/> </my-body-component> </template> My goal is to make my-body-component ...

What steps can be taken to address the InvalidPipeArgument error when working with dates?

When attempting to format a date in a specific way using the pipe date, I encountered an error: Uncaught Error: InvalidPipeArgument: 'Unable to convert "25/01/2019" into a date' for pipe 'e' at Xe (main.fc4242d58c261cf678ad.js:1) ...

Next.js production build encountering an infinite loading error

I have been utilizing the Next.js TypeScript starter from https://github.com/jpedroschmitz/typescript-nextjs-starter for my current project. The issue I am facing is that when I attempt to build the project after creating numerous components and files, it ...

Expanding the functionality of the Typescript number data type

I am trying to enhance the functionality of the number type. Here is the code I attempted: interface NumberExtension { IsInRange(min: number, max: number):boolean; } Number.prototype.IsInRange = function(min: number, max: number): boolean { if (( ...

Updating the color of specific buttons using ngFor in Typescript and Angular 8

I have successfully implemented a feature where text is displayed word by word using an ngFor directive. Within the ngFor loop, there is an if-else statement that determines whether each word should be displayed as a <span> or a <button>. Now, ...

What is the best method for excluding the sys object from a Contentful CDA response?

Is there a way to exclude the sys object from the Content Delivery API response when using the getEntries method with the select search parameter in querying? I've tried including it but the sys object is not being removed. getProducts(query?: object ...

Using @Input to pass data from a parent component to a

Looking to modularize the form code into a separate component for reusability? Consider using @Input and referencing it in the HTML to pass values to the post method. Here's how you can achieve this: Previously, everything worked smoothly when all th ...

Reset Angular Material autocomplete upon selection

The issue I'm encountering is as follows: when an option is chosen from the autocomplete input, it should not only add a chip to the Angular Material Chips component (which it currently does), but also clear the autocomplete input so that another opti ...

Utilizing an array for substituting sections of a string: a guide

I have an array of values like ['123', '456', '789']. What is the best way to iterate over this array and update parts of a string that contain the text :id in sequence (e.g. users/:id/games/:id/server/:id)? Currently, I&apos ...

Tips for displaying bar chart labels effectively with ChartJS

I am working on an Angular project and I would like to incorporate a barchart using ChartJS. The data for this chart can vary in size, sometimes being very large. One issue I have encountered is that when the number of data points is large, the labels ove ...

Learn how to effortlessly move a file into a drag-and-drop area on a web page with Playwright

I am currently working with a drag-zone input element to upload files, and I am seeking a way to replicate this action using Playwright and TypeScript. I have the requirement to upload a variety of file types including txt, json, png. https://i.stack.img ...

Utilizing TypeScript Interfaces for Recursive JSON Structures

I am currently working on adapting a product's ontology with its properties using JSON. The structure I have in mind is outlined below. Each Product (Concept) has two types of properties: 1. Data Properties 2. Object Properties When using ...

Clicking on an empty space within the Angular project will trigger a screen update when new data is retrieved from

Working on an Angular project where data is fetched from various services and used for calculations. The processed data is then displayed in a component utilizing the Syncfusion Grid Component. However, there seems to be an issue where the data loads durin ...