如何将 '__extends = function () {}' 重写为 object

How to rewrite '__extends = function () {}' to an object

首先抱歉,标题没有意义。这是我正在处理的内容,最后还有一个 TL;DR。

我正在使用 Microsoft 的 tslib 库,here 是上下文的完整源代码。我需要对库进行一些小的调整以使其与我的项目一起工作,所以我 copy-pasted 将代码保存到一个文件中并在那里进行编辑。修改后的代码适用于我之前处理的 React 项目,但由于以下几行,它无法使用 React Native:

(function (exporter) {

   // some irrelevant stuff

    __extends = function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
});

(这部分我没有修改,你可以在原源码第66行找到)

当 React Native 尝试将其编译为本机代码时,它会中断并显示错误消息 Prototype value can only be an object or null 错误来自 __extends = function(d, b) { 赋值。

所以我需要以某种方式将内部匿名函数转换为 object,问题是即使我已经使用 JavaScript 多年,我真的不知道这段代码是什么应该做的。我是一个 ES6+ 的人,这些东西对我来说就像埃及象形文字。各位JS老手能不能过来救救我?

TL;DR:我需要以某种方式将 __extends = fuction() {} 转换为 object,它会做与函数相同的事情。

这是一个非常古老的模式,用于设置 class 继承。可以找到类似的东西herenew __() 的使用早于 Object.create 的存在。你应该可以用

替换这个东西
function __extends(d, b) {
    extendStatics(d, b);
    d.prototype = b === null
      ? Object.create(b)
      : Object.assign(Object.create(b.prototype), {constructor: d});
}