Typescript Class 推理

Typescript Class inference

有谁知道如何在 abstract-generic-class 中获取当前 class |如何像类型 "CurrentClass" 一样引用当前 class 而不仅仅是抽象 class?

原因:我正在写一个小库,应该 "infer" 当前 class 而不是 "as CurrentClass"

abstract class Super {
  public static create(args: keyof CurrentClass) {}
}

class CurrentClass extends Super {}

// to prevent
CurrentClass.create({} as CurrentClass);

我到处搜索,但找不到这个问题的答案,所以它甚至可以用打字稿吗?


会解决它,但不适用于静态函数

更新:this 似乎是我要找的问题

通常的解决方法是添加一个类型参数以从调用中推断目标:

abstract class Super {
  s = ""
  public static create<T>(this:new (...a: any[]) => T, args: keyof T) {}
}

class CurrentClass extends Super {
  c = ""
}

// to prevent
CurrentClass.create("c"); // ok
CurrentClass.create("s"); // ok

play