abstract class A {
}
class B extends A {
public static readonly TYPE = "A";
}
interface forValue<T extends { TYPE: string }> {
type: T["TYPE"]
}
上面的方法工作得很好,现在我希望能够使用它而不必这样做:forValue<typeof (T extends A)>
对于A,T的每个子类。
所以我想要这样的东西:
type forClass<T extends A> = forValue<typeof T>;
但是出现错误TS2693: 'T' only refers to a type, but is being used as a value here.
。我不认为打字稿会在T之前接typeof
。如果我将T替换为B,即:
type forClass<T extends A> = forValue<typeof B>;
它工作正常。
这是一个错误吗?