TypeScript泛型:此类型作为默认泛型类型/此类型的类

TypeScript泛型:此类型作为默认泛型类型/此类型的类,typescript,generics,this,default,Typescript,Generics,This,Default,假设我有以下简单类来表示树结构: class TreeNode1 { private _parent: this | null = null; public setParent(parent: this) {this._parent = parent;} } const myTreeNode1 = new TreeNode1(); 通过键入parent:this,可以确保myTreeNode1的父级与myTreeNode1具有完全相同的类/原型。注意,这不同于父类:TreeNode1(

假设我有以下简单类来表示树结构:

class TreeNode1 {
  private _parent: this | null = null;
  public setParent(parent: this) {this._parent = parent;}
}
const myTreeNode1 = new TreeNode1();
通过键入
parent:this
,可以确保
myTreeNode1
的父级与
myTreeNode1
具有完全相同的类/原型。注意,这不同于父类:TreeNode1(对于子类的情况)

现在,我希望通过允许树节点具有来自不同(子)类的父节点来实现更大的灵活性:

但这给了我一个错误“TS2526:A'this'类型仅在类或接口的非静态成员中可用”,这是相当合乎逻辑的。但是我怎么才能避开这个问题呢

class TreeNode2<TParent extends TreeNode2<any>> {
  private _parent: TParent | null = null;
  public setParent(parent: TParent) {this._parent = parent;}
}
const myTreeNode2 = new TreeNode2<...>();
class TreeNode2<TParent extends TreeNode2<any> = this>