【问题标题】:Can i extends Dayjs class?我可以扩展 Dayjs 课程吗?
【发布时间】:2022-01-26 07:33:10
【问题描述】:

我正在使用 Dayjs,打字稿。

我想这样使用

export class CustomDate extends dayjs.Dayjs {
  format() {
  }
}

它返回'TypeError: Class extends value undefined is not a constructor or null'。

当我搜索这个时,出现这个问题的原因是循环依赖,但我无法理解......

是不是方法不对?

【问题讨论】:

  • 这个dayjs.Dayjs 导致未定义
  • 哦....我明白了..它在我登录时返回 undefined.... 那么,有没有办法扩展真正的 Dayjs 类??
  • 不太确定,但如果它存在,您首先需要获取该类
  • 除非 dayjs 文档支持子类化,否则我建议避免这种情况。

标签: javascript typescript dayjs


【解决方案1】:

我研究了一下源代码,我认为这会起作用。不过由于 dayjs 官方不支持子类化,所以不推荐这样做。

(不过,您可能需要继续挖掘源代码:https://github.com/iamkun/dayjs/blob/4a7b7d07c885bb9338514c234dbb708e24e9863e/src/index.js

/* Extracting the underlying Datejs class */
const Dayjs_proto = Object.getPrototypeOf(dayjs());
const Dayjs = Dayjs_proto.constructor;
Dayjs.prototype = Dayjs_proto;

class CustomDate extends Dayjs {
  constructor(date) {
    super({
      date: date,
      args: arguments,
    });
  }
  format() {
  }
}

const myCustomDateObject = new CustomDate(new Date());
console.log(myCustomDateObject);
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.10.7/dayjs.min.js"></script>

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2013-02-25
    • 1970-01-01
    • 2010-09-27
    • 2011-11-21
    • 2021-12-25
    相关资源
    最近更新 更多