Microsoft/TypeScript

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

開放

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

 (1 則留言) (0 個反應) (0 位負責人)TypeScript (13,395 個分叉)batch import
Effort: DifficultExperimentation NeededHelp WantedSuggestion

倉庫指標

星標
 (108,860 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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:

貢獻者指南