Microsoft/TypeScript

Argument of type 'this' is not assignable to parameter of type 'NonNullable'?

Open

#41,340 建立於 2020年10月30日

在 GitHub 查看
 (1 留言) (0 反應) (0 負責人)TypeScript (48,455 star) (6,726 fork)batch import
Effort: DifficultExperimentation NeededHelp WantedSuggestion

描述

TypeScript Version: 4.0.3

Search Terms: 'this' is not assignable to 'NonNullable'

Code

abstract class TreeNode {
  parent: this | null = null; // polymorph this
  left: this | null = null;
  right: this | null = null;

  replaceChild(child: this, replacement: this | null = null) { // this - polymorph type
    this.left = child;
    this.right = replacement;
  }

  removeNode() {
    this.parent?.replaceChild(this, null); // ERROR
  }

  removeNode2Way() {
    if (this.parent) {
      this.parent.replaceChild(this, null); // OK
    }
  }
}

Expected behavior: Conditional call without errors.

Actual behavior: Error: Argument of type 'this' is not assignable to parameter of type 'NonNullable'

Playground Link: Playground

Related Issues:

貢獻者指南