首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类型记录中引用泛型类型的泛型类型?

在类型记录中引用泛型类型的泛型类型?
EN

Stack Overflow用户
提问于 2021-03-02 21:47:40
回答 1查看 301关注 0票数 0

是否可以在类型记录中引用泛型类型的泛型类型?基本上,对于给定的类型:

代码语言:javascript
复制
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"]找到它,但我更希望有一种直接引用这种类型的方法。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-03 00:04:52

对于infer来说,这似乎是一个很好的例子,但你只能在条件词中使用.因此,我最后使用了一个条件,该条件总是计算true:

代码语言:javascript
复制
class Wrapper<AnyBaseClass extends BaseClass<any>> {
  state: AnyBaseClass extends BaseClass<infer T> ? T : never;
}

也许有一种更简洁的方式来编写这个文件,但是它会得到正确的state类型。我还把你的InheritedClass<any>改成了BaseClass<any>,认为这是个错误

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66447638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档