Typescript派生类构造函数返回基类实例

时间:2019-10-25 11:11:45

标签: typescript

人们希望诸如继承之类的基本功能在Typescript中起作用,但显然不行!我有这样的代码:

class GrowableBuffer extends Buffer {

  constructor(size: number) {
    super(size);
  }

  public append(b: Buffer): GrowableBuffer {
    ...

Buffer是节点类型。

在另一个班上,我有一个财产

  private buffer: GrowableBuffer = new GrowableBuffer(0);

然而,buffer最终只是Buffer,而不是GrowableBuffer,因此this.buffer.append()抱怨append()不存在。 WTF?我在编译过程中没有出现任何Typescript错误,并且似乎在Typescript运动场中产生了模糊不清的结果,但是我的输出代码是这种怪诞的:

var GrowableBuffer = /*#__PURE__*/
function(_Buffer) {
    Object(_Why_is_my_home_directory_here_node_modules_babel_runtime_corejs2_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_7__["default"])(GrowableBuffer, _Buffer);

    function GrowableBuffer(size) {
        var _this;

        Object(_Why_is_my_home_directory_here_node_modules_babel_runtime_corejs2_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__["default"])(this, GrowableBuffer);

        _this = Object(_Why_is_my_home_directory_here_node_modules_babel_runtime_corejs2_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__["default"])(this, Object(_Why_is_my_home_directory_here_modules_babel_runtime_corejs2_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__["default"])(GrowableBuffer).call(this, size));
        return _this;
    }

这是否应该起作用,并且Webpack搞砸了?

0 个答案:

没有答案