是否可以在类型记录中引用泛型类型的泛型类型?基本上,对于给定的类型:
class BaseClass<SomeType> {
// ...
}
class InheritedClass extends BaseClass<string> { }
class Wrapper<AnyBaseClass extends BaseClass<any>> {
state: AnyBaseClass[<SomeType>]; // What should I put here ?
}
const wrapper = new Wrapper<InheritedClass>();
wrapper.state = "foo"; // Ok
wrapper.state = 4; // Not ok我希望属性state的类型取决于给Wrapper的内部泛型参数。
有方法引用这个内部泛型类型吗?我找到的唯一解决方案是尝试使用ReturnType<...>或AnyBaseClass["anyPropertyOfTypeSomeType"]找到它,但我更希望有一种直接引用这种类型的方法。
提前感谢!
发布于 2021-03-03 00:04:52
对于infer来说,这似乎是一个很好的例子,但你只能在条件词中使用.因此,我最后使用了一个条件,该条件总是计算true:
class Wrapper<AnyBaseClass extends BaseClass<any>> {
state: AnyBaseClass extends BaseClass<infer T> ? T : never;
}也许有一种更简洁的方式来编写这个文件,但是它会得到正确的state类型。我还把你的InheritedClass<any>改成了BaseClass<any>,认为这是个错误
https://stackoverflow.com/questions/66447638
复制相似问题