typescript - 在 Typescript 中引用泛型类型的泛型类型?
问题描述
是否可以在 Typescript 中引用泛型类型的泛型类型?基本上,对于给定的类型:
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<...>
or找到它AnyBaseClass["anyPropertyOfTypeSomeType"]
,但我更希望有一种直接引用这种类型的方法。
提前致谢!
解决方案
这似乎是一个很好的例子infer
,但你只能在条件中使用它......所以我最终使用了一个总是评估为真的条件来使用这种 janky 类型:
class Wrapper<AnyBaseClass extends BaseClass<any>> {
state: AnyBaseClass extends BaseClass<infer T> ? T : never;
}
可能有一种更简洁的方法来编写它,但它会为state
. 我也把你改成InheritedClass<any>
了BaseClass<any>
这里,认为这是一个错字
推荐阅读
- java - Spring RestTemplate XML 到 json
- jupyter-notebook - How to pass a parameter from the Jupyter backend to a frontend extension
- excel - 如何使用 VBA 从公共网站提取数据?
- session - Gorrila 会话文件系统存储找不到会话文件
- reactjs - 如何在反应护照身份验证流程中打开和关闭一个小窗口
- json - 如何在 Spring Boot 中将 json 对象发送到 REST API
- react-native - React Native:是否可以仅将 Expo 用于开发?
- javascript - 当 find 返回未定义时,Angular 和 rxjs 捕获错误
- c# - 使用特征检测时如何获取对象的位置?
- nginx - 在访问日志中每 10 秒从 localhost 看到 GET /server-status