ES6或typescript中Date类的继承问题

查看:101
本文介绍了ES6或typescript中Date类的继承问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

关于在es6中如何继承Date类的问题

在ES6标准入门中,明确有说可以ES6中可以继承原生构造函数,如Array,Date等,但是只举了Array的例子。
最近在项目中遇到了很多时间操作,所以想自定义一个继承自Date的类,添加一些方便的方法

class MyDate extends Date {
    constructor() {
        super();
    }
    ......
}
let foo = new MyDate();
console.log(foo.getDate());

这个时候就报错了,说getDate方法只能用于Date对象,对这个结果表示不理解。
在typescript中也会发生同样的错误
谷歌上有搜到说,在typescript中,是不允许对原生构造函数进行继承的,所以如果想添加什么自定义方法,只能使用interface,这就有点矛盾了。。。
所以想请教一下各位大佬,如果想使用extends Date的方法定义一个MyDate,既能实现自定义的方法,又能保证原生方法的实现,正确的写法应该是什么样的

解决方案

那就不用继承咯,用复合。

class MyDate {
  private date: Date;

  constructor (...args) {
    this.date = new Date();
  }

  getDate () {
    return this.date.getDate() + ' MyDate';
  }
}

这篇关于ES6或typescript中Date类的继承问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆