typescript - 如何在方法中执行协变泛型返回类型?
问题描述
我有一个接口,我想要一个返回实现类实例的方法,我当前的实现是这样的:
interface SuperClass<T extends SuperClass<any>> {
returnSelf(): T;
}
class SubClass implements SuperClass<SubClass> {
public returnSelf(): SubClass {
return this;
}
}
const subclass: SubClass = new SubClass().returnSelf();
但是,这使用了any
我知道应该不惜一切代价避免使用的类型。我的问题是,这种类型安全吗?我想不出它不会出现的任何情况,但我宁愿使用更安全的unknown
类型,但它不会编译。为什么?有没有更惯用的方式来做到这一点?
解决方案
您可以this
用作类型。
https://www.typescriptlang.org/docs/handbook/advanced-types.html#polymorphic-this-types
interface SuperClass {
returnSelf(): this;
}
class SubClass implements SuperClass {
public returnSelf(): this {
return this;
}
}
const subclass: SubClass = new SubClass().returnSelf();
推荐阅读
- html - 烧瓶出现没有导航栏按钮
- java - 将两个文件中的数据打印到控制台,现在我想合并这两个数据并使用 prinWriter 在一个文件中打印
- python-3.x - 导入错误:无法导入名称预处理
- apache - ProxyPass 重定向到同一路径
- html - 如何将有序列表的第一个和第二个孩子设置为具有相同的缩进?
- outlook - 防止 Outlook Mobile 自动创建不真实的链接
- php - Google oauth2 服务 api 密钥无效
- javascript - Javascript 对象选项:function 或 null
- seal - SEAL 代码中的刷新和有效性检查操作
- css - react-select V2 - 如何在 `isMulti` `ValueContainer` 上实现 `overflow-x: hidden`